JavaScript變數
技術標籤:前端
在學習Java的時候,我們先學習的是變數,然後學習了方法,學習JavaScript語法規則和Java一樣,也是需要學習變數和方法(但JavaScript比較特殊的是,它將方法也視為了變數)。
命名規則
JavaScript的變數名命名規則和Java一樣
- 由字母、數字、下劃線_、美元符號$組成(不建議使用中文)
- 數字不能開頭
- 不能使用關鍵字
- 區分大小寫
資料型別
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:
- 陣列的型別是object
- 使用標準形式賦值的變數的型別都是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;
}