下面JavaScript代碼輸出結果是?
則y個z的值分別是多少?
A、 undefined undefined
B、 4 4
C、1 4
D、1 1
解析:
本題迷惑性比較大,看題要仔細。
function add(n)函數沒有返回值,所以y和z都是undefined。
可能有些人會問為什麼沒寫return語句返回的就是undefined呢?
我們查看js的規範:
根據規範來看,如果沒有return語句(函數體內沒有代碼也算),返回的是undefined。
有很多知識,我們不是很懂的建議多去查規範而不僅僅是使用手冊。
拓展
如果這題 add函數里,加上返回值呢?
這裡有兩個add函數,後面的覆蓋前面的。
y和z的值都會是4.
如果這題改成如下代碼呢?
這時s的值為NaN
因為 y 和z 都是undefined
那為啥 undefined相加是NaN呢?
http://es5.github.io/#x11.4.6
我們可以看到 加法操作主要針對 字符串和數字類型。
第8條,操作執行 ToNumber函數
http://es5.github.io/#x9.3
看到這裡就一目瞭然了,Undefined作為參數執行ToNumebr函數時,結果是NaN。
而且我們順便可以看到,參數為Null和Boolean類型的情況。
在這裡我們會觀察到平時沒有注意到的很多細節。
JavaScript 參考文檔
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference
Es5規範文檔 http://es5.github.io/
歡迎加入Java學習群:116291581 一起探討交流。
群裡有已經在公司工作的大牛,也有初學Java的新手。
也有很多在校大學生、研究生。
閱讀更多 明明如月學長 的文章
關鍵字: 程序員 技術 JavaScript