加號操作符

問題

請問下面這行代碼的執(zhí)行的結(jié)果?

 ++[[]][+[]]+[+[]] 

第一眼看到這個(gè)很可能是懵逼的,這是個(gè)什么玩意兒,能執(zhí)行嗎?

第一個(gè)要點(diǎn):
+[] = ?

firefox測試運(yùn)算結(jié)果.png

重點(diǎn)來了: +"" = 0

根據(jù)周愛民老師《JavaScript語言精髓與編程實(shí)踐》,單個(gè)加號作為運(yùn)算符在JavaScript中有三種作用。

  1. 標(biāo)識字符串連接
  2. 表示數(shù)字取正值的一元運(yùn)算符
  3. 表示數(shù)值表達(dá)式的求和運(yùn)算。

加號在對數(shù)字取正值時(shí),如果后面接的數(shù)據(jù)不是數(shù)字,那么會進(jìn)行強(qiáng)制類型轉(zhuǎn)換。

所以表達(dá)式++[[]][+[]]+[+[]]可以簡化為
++[[]][0]+[0]
在這里++[[]][0]=+(+[[]][0]+1) = +(0+1) = 1
然后再次簡化為
1+[0]=1+"0" = 10

加號運(yùn)算符的另外一條規(guī)則是如果表達(dá)式中存在字符串,則優(yōu)先按照字符串連接進(jìn)行運(yùn)算。所以數(shù)字1和字符串"0"相加,得到的結(jié)果是字符串"10"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容