1. 程式人生 > >學習小記:JS判斷時特殊值與boolean類型的轉換

學習小記:JS判斷時特殊值與boolean類型的轉換

ring something mbo true mage js框架 temp some .info

扒開JQuery以及其他一些JS框架源碼,常常能看到下面這樣的判斷,

寫慣了C#高級語言語法的我,一直以來沒能系統的理解透這段代碼。

var test;
 //do something...  
if(test){
   //do something...  
}

此處就系統的記錄一下這個JS特殊值與boolean類型的轉換,測試代碼與結果如下

 window.onload = function () {
            var minusNum = -1;
            var zero = 0;
            var one = 1;
            
var stringEmpty = ‘‘; var stringNotEmpty = ‘111‘; var objFunc = function () { }; console.group("JS中特殊值與bool的轉換"); undefined ? console.info("undefined is true") : console.info("undefined is false"); null ? console.info("null is true") : console.info("null is false"); minusNum
? console.info("負數 is true") : console.info("負數 is false"); zero ? console.info("zero(數字0) is true") : console.info("zero(數字0) is false"); stringNotEmpty ? console.info("stringNotEmpty is true") : console.info("stringNotEmpty is false"); stringEmpty ? console.info("stringEmpty is true") : console.info("stringEmpty is false"); objFunc
? console.info("objFunc is true") : console.info("objFunc is false"); NaN ? console.info("NaN is true") : console.info("NaN is false"); console.groupEnd(); }

技術分享

==和===的區別

判斷自然離不開==,同時引用記錄一下。原文:http://blog.sina.com.cn/s/blog_4b32835b01014iv9.html

1、對於string,number等基礎類型,==和===是有區別的

  1)不同類型間比較,==之比較“轉化成同一類型後的值”看“值”是否相等,===如果類型不同,其結果就是不等

  2)同類型比較,直接進行“值”比較,兩者結果一樣

2、對於Array,Object等高級類型,==和===是沒有區別的

  進行“指針地址”比較

3、基礎類型與高級類型,==和===是有區別的

  1)對於==,將高級轉化為基礎類型,進行“值”比較

  2)因為類型不同,===結果為false

typeof和instanceof

1、typeof用於檢查變量的數據類型,返回一個字符串。

  typeof 返回字符串,有7種可能:"number"、"string"、"boolean"、"object"、"function"、"undefined" 、"symbol",

  typeof 檢查的變量是一個對象,或者是 Null,那它就會返回 object。

2、instanceof是為了看一個變量是否是某個對象的實例,返回一個布爾值。

  instanceof只能用來判斷對象和函數等對象類型,不能用來判斷字符串和數字等基礎類型。

學習小記:JS判斷時特殊值與boolean類型的轉換