为什么结果因大括号放置而异?

为什么结果因大括号放置而异?

为什么从本文中获取的代码片段会产生不同的结果,因为花括号的位置只有一个变化?

当开始大括号{在新行上时,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);}

当括号与同一行时returntest()返回一个对象,并提醒“神奇”。

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);}


偶然的你
浏览 393回答 3
3回答

慕码人2483693

Javascript在语句结尾处不需要分号,但缺点是它必须猜测分号的位置。大多数情况下这不是问题,但有时它会发明一个你不打算使用分号的分号。我的博客文章中的一个例子(Javascript - 几乎不基于行):如果您格式化代码如下:function&nbsp;getAnswer()&nbsp;{ &nbsp;&nbsp;&nbsp;var&nbsp;answer&nbsp;=&nbsp;42; &nbsp;&nbsp;&nbsp;return &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;answer;}然后它被解释为这样:function&nbsp;getAnswer()&nbsp;{ &nbsp;&nbsp;var&nbsp;answer&nbsp;=&nbsp;42; &nbsp;&nbsp;return; &nbsp;&nbsp;answer;}return语句采用无参数形式,参数成为它自己的声明。你的代码也是如此。该功能被解释为:function&nbsp;test(){ &nbsp;&nbsp;return; &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;javascript&nbsp;:&nbsp;"fantastic" &nbsp;&nbsp;};}

明月笑刀无情

这是因为javascript最常放“;”&nbsp;在每一行的末尾,所以基本上当你返回{在同一行,javascript引擎看到会有更多的东西,当它在新行中它认为你忘了放“;”,并把它给你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript