Java程序員面試之JavaScript細節題

Java程序員面試之JavaScript細節題

下面JavaScript代碼輸出結果是?

Java程序員面試之JavaScript細節題

則y個z的值分別是多少?

A、 undefined undefined

B、 4 4

C、1 4

D、1 1


解析:

本題迷惑性比較大,看題要仔細。

function add(n)函數沒有返回值,所以y和z都是undefined。

可能有些人會問為什麼沒寫return語句返回的就是undefined呢?

我們查看js的規範:

Java程序員面試之JavaScript細節題

根據規範來看,如果沒有return語句(函數體內沒有代碼也算),返回的是undefined。

有很多知識,我們不是很懂的建議多去查規範而不僅僅是使用手冊。

Java程序員面試之JavaScript細節題

拓展

如果這題 add函數里,加上返回值呢?


Java程序員面試之JavaScript細節題

這裡有兩個add函數,後面的覆蓋前面的。

y和z的值都會是4.

如果這題改成如下代碼呢?

Java程序員面試之JavaScript細節題

這時s的值為NaN

因為 y 和z 都是undefined

那為啥 undefined相加是NaN呢?

http://es5.github.io/#x11.4.6

Java程序員面試之JavaScript細節題

我們可以看到 加法操作主要針對 字符串和數字類型。

第8條,操作執行 ToNumber函數

http://es5.github.io/#x9.3

Java程序員面試之JavaScript細節題

看到這裡就一目瞭然了,Undefined作為參數執行ToNumebr函數時,結果是NaN。

而且我們順便可以看到,參數為Null和Boolean類型的情況。

在這裡我們會觀察到平時沒有注意到的很多細節。

JavaScript 參考文檔

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference

Es5規範文檔 http://es5.github.io/

歡迎加入Java學習群:116291581 一起探討交流。

群裡有已經在公司工作的大牛,也有初學Java的新手。

也有很多在校大學生、研究生。

Java程序員面試之JavaScript細節題


分享到:


相關文章: