javascript - 【快速判斷數(shù)組為空】[]==false 為什么返回true?
問題描述
console.log([]==false); //輸出為trueconsole.log([’1’]==false);//輸出為false
可見,這可以很快速判斷數(shù)組是否為空,但是原理上有些疑惑。已知:
1.相等操作符'==':先轉(zhuǎn)換再比較。 如果有一個(gè)操作數(shù)是布爾值,則在比較相等性之前將其轉(zhuǎn)換為數(shù)值false轉(zhuǎn)換為0,true轉(zhuǎn)換為1。
2.如果一個(gè)操作數(shù)是對(duì)象,另一個(gè)操作數(shù)不是,則調(diào)用對(duì)象的valueOf()方法,用得到的基本類型值進(jìn)行轉(zhuǎn)換。
所以[]==fasle的右邊會(huì)被轉(zhuǎn)換成0。那左邊呢?是怎樣轉(zhuǎn)換的呢?
問題解答
回答1:這個(gè)送給你,javascript 的對(duì)比表格:Relational and Equality Operators
http://tech.youzan.com/javasc... 看完你會(huì)懂的
回答3:因?yàn)樗麄兌紩?huì)轉(zhuǎn)化為布爾值進(jìn)行比較, []==false => true == false //false
回答4:先轉(zhuǎn)為數(shù)字0,然后再對(duì)比吧。
回答5:講道理判斷數(shù)組為空用這個(gè)是不行的吧!
if([]){ alert(’1111’);}
我以為它不會(huì)彈,結(jié)果還是彈了。大多數(shù)情況還是length來判斷。當(dāng)然length判斷元素個(gè)數(shù)的時(shí)候也是坑!
回答6:只能說js的內(nèi)部機(jī)制是空數(shù)組就是false所以false==false成立啊!那非空數(shù)組自然轉(zhuǎn)換成true了true==false就不成立啊!有啥難理解的嗎?
相關(guān)文章:
1. mysql 查詢身份證號(hào)字段值有效的數(shù)據(jù)2. mysql - 把一個(gè)表中的數(shù)據(jù)count更新到另一個(gè)表里?3. 請(qǐng)教使用PDO連接MSSQL數(shù)據(jù)庫(kù)插入是亂碼問題?4. mysql - 分庫(kù)分表、分區(qū)、讀寫分離 這些都是用在什么場(chǎng)景下 ,會(huì)帶來哪些效率或者其他方面的好處5. python - 數(shù)據(jù)與循環(huán)次數(shù)對(duì)應(yīng)不上6. python - 爬蟲模擬登錄后,爬取csdn后臺(tái)文章列表遇到的問題7. 視頻文件不能播放,怎么辦?8. 黑客 - Python模塊安全權(quán)限9. Python爬蟲如何爬取span和span中間的內(nèi)容并分別存入字典里?10. node.js - nodejs開發(fā)中常用的連接mysql的庫(kù)
