为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

偶然的你 2019-07-30 17:02:30
为什么结果因大括号放置而异?为什么从本文中获取的代码片段会产生不同的结果,因为花括号的位置只有一个变化?当开始大括号{在新行上时,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"
  };}


查看完整回答
反对 回复 2019-07-30
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

这是因为javascript最常放“;” 在每一行的末尾,所以基本上当你返回{在同一行,javascript引擎看到会有更多的东西,当它在新行中它认为你忘了放“;”,并把它给你。


查看完整回答
反对 回复 2019-07-30
  • 3 回答
  • 0 关注
  • 391 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信