我們經常在做邏輯判定時會根據判定值的布林型別來區分操作,即如果是··則··,不然則··的邏輯語境,但由於js的弱型別特性,它可以利用不同型別的值來替代布林值。如:
if(!false){},
if(!""){},
if(!undefined){},
if(!null){},
if(!0){}
效果相同。
但是,這裡面又有哪些陷阱呢?
這些值中
0 == false //true
"" == false //true
"" == 0 //true
false == undefined //false
false == null //false
null == undefined //true
從上面我們可以看出,雖然 0/false/「」/null/undefined 可以充當相同的布林角色,但是它們卻不能在值上相等。只有 0,false,""值相等,undefined與null值相等,其他不相等。
這裡在js執行時的認定機制我也不是特別清楚,我大概知道js在這裡做了一些不嚴謹的型別轉換,所有的值都會被轉換為兩個值 : false 與true,再執行**。
由於if語句經常用到,這幾種情況還是記下來比較好。
JS 判斷空值
1 typeof用法 typeof的運算數未定義,返回的就是 undefined 運算數為數字 typeof x number 字串 typeof x string 布林值 typeof x boolean 物件,陣列 和 null typeof x object 函式 typeof x funct...
JS 邏輯判斷選擇器
與 在js裡與其它語言不一樣,這是選擇器運算子,而非邏輯運算子。對於 來說,若判斷為true,則返回第乙個值,為false返回第二個值。相反,若判斷為 true,則返回第二個,為 false為返回第乙個值。絕對不是像其它語言那樣返回true或false,而是會返回第乙個值或第二個值。簡單的測試 如下...
JS教程 邏輯分支(判斷語句)
語法 if 判斷條件 else 條件為真,執行if,條件為假,執行else if 只需要布林值 所以if判斷時,會把 內所有資料型別先隱式轉換成布林型 if 中,非零數字都會轉成true,非空字元都會轉成true 語法 switch switch 內,不會做判斷,在case身上判斷這個值是否符合 判...