3基本概念
3.3變量
var message; //未經初始化,默認爲一個特殊值undefined
var message = "hi"; //初始化
var a=1,b="2",c=true;//定義多個變量,逗號分隔
var定義的變量是該變量的作用域中的局部變量
function test(){
var message="hi";//局部變量
}
test();
alert(message);//錯誤!
省略var,message爲全局變量,調用test()後就有定義,不推薦
function test(){
message="hi";//全部變量
}
test();
alert(message);//錯誤!
3.4數據類型
5種簡單數據類型:Undefined,Null,Boolean,Number,String
1種複雜數據類型:Object
3.4.1 typeof
typeof檢測數據類型,對一個值使用typeof有可能返回的字符串:
- “undefined” 未定義
- “boolean” 布爾值
- “string” 字符串
- “number” 數值
- “object” 對象或null
- “function” 函數
3.4.2 Undefined類型
只有一個值,undefined。聲明變量但未初始化時,就是此值。
3.4.3 Null類型
只有一個值,null。表示空對象指針,因此typeof返回”object”。
3.4.4 Boolean類型
兩個值,true和false。
其他數據類型可轉換爲Boolean類型值,規則如下
數據類型 | 轉爲true | 轉爲false |
---|---|---|
Boolean | true | false |
String | 非空字符串 | “”(空字符串) |
Number | 非零數值 | 0和NaN |
Object | 任何對象 | null |
Undefined | 不適用 | undefined |
例子,根據轉換規則
var message="hello";
if(message){
alert(message);
}
3.4.5 Number類型
浮點數值計算會有誤差
if(a+b==0.3){ //不要做這樣的測試
alert("you got 0.3");
}
數值範圍:Number.MIN_VALUE 至 Number.MAX_VALUE
超過返回:正或負Infinity Number.NEGATIVE_INFINITY Number.POSITIVE_INFINITY
isFinite()函數可檢測是否在數值範圍中
NaN 是特殊數值 任何數除以0返回NaN isNaN()函數檢測 與任何值不相等,包括自身
數值轉換:Number() parseInte() parseFloat()
3.4.5 String類型
3.4.5 Object類型
3.6.8 with語句
大量使用會導致性能下降,不建議使用
3.6.9 switch語句
switch語句可以使用任何類型
case不一定是常量,可以是變量,甚至是表達式
比較值時,使用全等操作符
3.7 函數
3.7.1 理解參數
命名的參數只是提供便利,但不是必需的。在函數中,arguments.length可知道參數長度,arguments[i]可訪問參數,從0開始。
3.7.2 沒有重載
通過檢查傳入函數中參數的類型和數量並作出不同的反應,可以模仿方法的重載。