下面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的新手。
也有很多在校大学生、研究生。
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-