为什么结果因大括号放置而异?为什么从本文中获取的代码片段会产生不同的结果,因为花括号的位置只有一个变化?当开始大括号{在新行上时,test()返回undefined,并且警报中显示“no - it broke:undefined”。function test(){
return
{ /* <--- curly brace on new line */
javascript: "fantastic"
};}var r = test();try {
alert(r.javascript); // does this work...?} catch (e) {
alert('no - it broke: ' + typeof r);}当括号与同一行时return,test()返回一个对象,并提醒“神奇”。function test(){
return { /* <---- curly brace on same line */
javascript: "fantastic"
};}var r = test();try {
alert(r.javascript); // does this work...?} catch (e) {
alert('no - it broke: ' + typeof r);}
3 回答
慕码人2483693
TA贡献1860条经验 获得超9个赞
Javascript在语句结尾处不需要分号,但缺点是它必须猜测分号的位置。大多数情况下这不是问题,但有时它会发明一个你不打算使用分号的分号。
我的博客文章中的一个例子(Javascript - 几乎不基于行):
如果您格式化代码如下:
function getAnswer() { var answer = 42; return answer;}
然后它被解释为这样:
function getAnswer() { var answer = 42; return; answer;}
return语句采用无参数形式,参数成为它自己的声明。
你的代码也是如此。该功能被解释为:
function test(){ return; { javascript : "fantastic" };}
明月笑刀无情
TA贡献1828条经验 获得超4个赞
这是因为javascript最常放“;” 在每一行的末尾,所以基本上当你返回{在同一行,javascript引擎看到会有更多的东西,当它在新行中它认为你忘了放“;”,并把它给你。
添加回答
举报
0/150
提交
取消