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