经典面试题(7):下面的代码运行结果是什么么?
JavaScript(ECMAScript)是一種弱類型語言,它可對值進(jìn)行自動類型轉(zhuǎn)換,以適應(yīng)正在執(zhí)行的操作。
讓我們通過下面的6個例子來說明一下。
例子1:
console.log(1 + "2" + "2");得到的結(jié)果是:
"122" 解析:?1 + "2" + "2"??輸出:?"122"?。 ?1 + "2"?是執(zhí)行的第一個操作。由于其中一個運(yùn)算對象?"2"?是字符串,JavaScript會假設(shè)它需要執(zhí)行字符串連接,因此,會將 ?1?的類轉(zhuǎn)換為?"1"??, ?1+"2"?結(jié)果就是?"12"?。然后,?"12"+"2"?就是?"122"?。
例子2:
console.log(1 + +"2" + "2");得到的結(jié)果是:
"32"解析:?1 + +"2" + "2"?輸出:?"32"?說明:根據(jù)運(yùn)算的順序,要執(zhí)行的第一個運(yùn)算是?+"2"?(第一個 "2" 前面的額外 + 被視為一元運(yùn)算符)。
因此,JavaScript將?"2"?的類型轉(zhuǎn)換為數(shù)字,然后應(yīng)用一元?+?號(即將其視為一個正數(shù))。其結(jié)果就是得到一個數(shù)字?2?,接下來的運(yùn)算就是?1 + 2?,這當(dāng)然是?3?。
然后我們需要在一個數(shù)字和一個字符串之間進(jìn)行運(yùn)算(即, 3 和 "2"),同樣的,JavaScript會將數(shù)值類型轉(zhuǎn)換為字符串,并執(zhí)行字符串的連接,產(chǎn)生?"32"?。
例子3:
console.log(1 + -"1" + "2");得到的結(jié)果是:
"02"解析:??1 + -"1" + "2"??輸出:?"02"?。這里的解釋和前一個例子相同,不同的地方是此處的一元運(yùn)算符是?-?而不是?+?。
先是?"1"?變?yōu)?1?,然后當(dāng)應(yīng)用?-?時又變?yōu)榱?-1?,然后將其與?1?相加,結(jié)果為?0?,再將其轉(zhuǎn)換為字符串,連接最后的 ?"2"??運(yùn)算對象,得到?"02"?。
例子4:
console.log(+"1" + "1" + "2");得到的結(jié)果是:
"112"解析:?+"1" + "1" + "2"??輸出: ?"112"?。雖然第一個運(yùn)算對象 ?"1"?因為前綴的一元?+?運(yùn)算符類型轉(zhuǎn)換為數(shù)值,但當(dāng)連接到第二個運(yùn)算對象?"1"?的時候,又立即轉(zhuǎn)換回字符串,然后又和最后的運(yùn)算對象?"2"? 連接,產(chǎn)生了字符串 ?"112"?。
例子5:
console.log( "A" - "B" + "2");得到的結(jié)果是:
"NaN2"解析:?"A" - "B" + "2"?輸出:?"NaN2"?。由于運(yùn)算符?-?不能被應(yīng)用于字符串,并且?"A"?和?"B"?都不能轉(zhuǎn)換成數(shù)值,因此,?"A" - "B"?的結(jié)果是?NaN??,然后再和字符串?"2"??連接,得到?"NaN2"??。
例子6:
console.log( "A" - "B" + 2);得到的結(jié)果是:
NaN解析:?"A" - "B" + 2?輸出:?NaN?。參見前一個例子,?"A" - "B"?結(jié)果為?NaN?。但是,應(yīng)用任何運(yùn)算符到?NaN?與其他任何的數(shù)字運(yùn)算對象,結(jié)果仍然是?NaN?。
熱門文章
原創(chuàng)教程原創(chuàng)教程:
附加習(xí)題:
職場焦慮:
感到迷茫:
培訓(xùn)出身:
培訓(xùn)費用:
搞笑黑話:
職業(yè)自由:
職場形象:
合作推廣分割線
總結(jié)
以上是生活随笔為你收集整理的经典面试题(7):下面的代码运行结果是什么么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科大星云诗社动态20210225
- 下一篇: 科大星云诗社动态20210224