當你宣告一個變數 但不給他任何值 or 不初始化牠(new) 那牠就會是undefined
var TestVar;
alert(TestVar); //shows undefined
alert(typeof TestVar); //shows undefined
此時要如何判斷是不是undefined 就要寫
if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below
註1:JS中 typeof 會有六種值 "number"、"string"、"boolean"、"object"、"function"、"undefined"
註2:第三種判斷方式 當 a 是 null 也也會是true ,因為
null == undefined // true
2. nullnull 是一種型態(type) 牠可以賦值給一個變數 表示"沒有值"
var TestVar = null;
alert(TestVar); //shows null
alert(typeof TestVar); //shows object
如何判斷是不是null呢 ?if (a === null)
// or
if (a == null) // but see note below
第二種判斷方式 當 a 是 undefined也也會是true ,因為null == undefined // true
3. ===
and !==
strict comparison operators(1) number : 當數字大小一樣就會成立,其中 NaN 不等於任何東西(包括他自己 所以JS有一個 isNaN(x) 函數用來判斷x是否NotANumber 而不能用==或是===) ,另外+0 === -0
(2) Boolean: 只有兩種情況成立 true===true, false===false (Ex. (1+2)>0===(2+1)>0)
(3) String : 當同樣字符,長度,位置時才會成立
(4) objects : 當同樣指到同一個物件才會成立
(5) Null and Undefined types are == , (Null===Undefined) is false
另外與 loose(Abstract) comparison不同的是 Strict 不會做形態轉換,所以Strict會做形態比較
比如說
"1" == 1
is true , "1" === 1
is false也就是==會做形態轉換(type coercion)強迫牠們兩個一樣 而 Strict會直接比較形態 不一樣type則false
4.一般都用 if(!somthing)
可以濾掉 空字串(""),null,undefined, false,0,NaN
if (!a) {
// `a` is falsey, which includes `undefined` and `null`
// (and `""`, and `0`, and `NaN`, and [of course] `false`)
}
因為DOM操作時(getElementById(), nextSibling(), childNodes[n], parentNode()),如果找不到Node就會回傳null (也就是說有定義,但用null表示沒有此Node)所以不需要特別做null與undefuned之間的差別判斷
沒有留言:
張貼留言