1. 程式人生 > 其它 >JavaScript變數

JavaScript變數

技術標籤:前端

  在學習Java的時候,我們先學習的是變數,然後學習了方法,學習JavaScript語法規則和Java一樣,也是需要學習變數和方法(但JavaScript比較特殊的是,它將方法也視為了變數)。

命名規則

  JavaScript的變數名命名規則和Java一樣

  1. 由字母、數字、下劃線_、美元符號$組成(不建議使用中文)
  2. 數字不能開頭
  3. 不能使用關鍵字
  4. 區分大小寫

資料型別

  JavaScript中定義變數使用 var 這個關鍵字,和Java中的變數定義不同,JavaScript的變數在定義時,並不知道是什麼型別的,而是需要在賦值的時候才會知道是什麼型別的變數,這種變數型別稱為動態型別或者弱型別。

var t0;

  JavaScript中需要掌握的變數型別有9種類型。

1. 三種特殊值

var t1 = undefined;
var t2 = null;
var t3 = NaN;

   undefined——未定義(或者未初始化),變數定義之後沒有賦值的情況。
   null——空值,變數定義之後賦值了,只不過賦的值是空值。
   NaN——數字型別,表示這個變數是一個數字型別,但不是某個數字。

2. 字串型別(String)

   用雙引號或者單引號括起來的是字串型別。

// 簡化形式
var s1 = "aaa";
var s2 = 'bbb';
// 標準形式
var
s3 = new String("ccc");

   一般使用時,還是簡化形式使用的比較多。
   在JavaScript中和Java一樣使用 \ 作為轉義字元,這一點非常重要,在拼接字串的時候經常會遇到使用轉義字元的情況。

3. 數值型別(Number)

   在Java中,整數型別和浮點數型別是分開的,但是在JavaScript中不論整數型別還是浮點數型別,都認為是Number型別。

// 簡化形式
var n1 = 12;
var n2 = 1.2;
// 標準形式
var n3 = new Number(12);
// 注意區別
var n4 = "12"
;

   n1、n2、n3 都是Number型別的變數,而 n4 是值為 12 的字串型別變數。

4. 布林型別(Boolean)

// 簡化形式
var b1 = true;
var b2 = false;
// 標準形式
var b3 = new Boolean(true);

5. 陣列型別

   JavaScript中陣列的使用和Java中有些不一樣,在Java中使用{ },而JavaScript中使用[ ]或者( )。

var array1 = [1, 2, 3];
var array2 = new Array(1, 2, 3);

  JavaScript中的陣列和Java中的陣列有很大差別,即使陣列是空的,也可以使用下標對其賦值。

var array3 = new Array();
array3[0] = 2;
array3[3] = 4;
console.log(array3);

在這裡插入圖片描述
  JavaScript中的陣列可以使用push方法向其中新增值,而且可以存放不同型別的值

var array3 = new Array();
array3[0] = 2;
array3[3] = 4;
array3.push("1,5");
console.log(array3);

在這裡插入圖片描述

6. 物件型別

  在JavaScript中,同樣有物件這個概念,但是JavaScript中沒有類的概念,只有物件,使用{ }來定義物件

// 簡化形式
var person1 = {
	name: "柚咖",
	age: 18,
	gender: "女"
}
// 標準形式(有點像Java中匿名內部類的使用)
var person2 = new Object({
	name: "柚咖",
	age: 18,
	gender: "女"
});

  這是一個最簡單的物件的定義,需要注意使用的是 屬性:屬性值的形式,每個屬性之間使用逗號 , 分隔。
  除了上面兩種情況,物件還有第三種使用方式,可以看到下面程式碼在定義時,沒有給person3定義name屬性,依舊可以在賦值的過程中加一個屬性。

// 第三種使用形式
var person3 = new Object();
person3.name = "柚咖";

  在上面的程式碼中,訪問物件中的屬性使用的是 物件.屬性名 的方式,這是簡化的形式,標準形式是 物件["屬性名"]

person3["name"] = "柚咖";

7. 函式型別

  在JavaScript中,函式名就是一個變數,下面的兩種方式是等價的

var f1 = function() {
}
function f2() {
}

8. 其他型別

  除了上面的9種變數型別之外,還需要了解兩個型別。

// 時間型別
var now = new Date();
// 正則表示式
var r1 = /\d+/;
var r2 = new RegExp("\\d+");
// 正則表示式的使用
r1.test(s1);// s1是個字串

獲取變數型別

  在不確定變數型別的時候,可以使用 typeof 這個關鍵字來獲取變數的型別。

console.log(typeof person2);

在這裡插入圖片描述

PS:

  1. 陣列的型別是object
  2. 使用標準形式賦值的變數的型別都是object
var s1 = "aa";
var s3 = new String("cc");
console.log(typeof s1);
console.log(typeof s3);

在這裡插入圖片描述

全域性變數和區域性變數

  在Java中有成員變數和區域性變數,JavaScript中同樣也有相同的概念,在方法中定義的變數是區域性變數,不在方法中定義的變數是全域性變數

// 全域性變數
var var1 = 2;
var f3() {
	// 區域性變數
	var var1 = 4;
}

  但是有一種情況例外——隱式定義當賦值給未使用var定義的變數時,該變數自動變為全域性變數

var f3() {
	// 區域性變數
	var var1 = 4;
	// 全域性變數
	p = 30;
}