当前位置: 首页 > 面试题库 >

为什么结果根据花括号的位置而有所不同?

明宜年
2023-03-14
问题内容

当左花括号{在新行上时,test()返回undefined,并且警报中显示“ no-it break: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);

}

问题答案:

这是JavaScript的陷阱之一:自动分号插入。不以分号结尾但可能是语句结尾的行会自动终止,因此您的第一个示例实际上是这样的:

function test()
{
  return; // <- notice the inserted semicolon
  { 
    javascript: "fantastic"
  };
}

在第二个示例中,您返回一个对象(由花括号构建),该对象的属性javascript及其值为"fantastic",实际上与此相同:

function test() {
    var myObject = new Object();
    myObject.javascript = "fantastic";
    return myObject;
}


 类似资料:
  • 问题内容: 而且我仍然无法理解花括号的工作原理,特别是由于诸如简单程序这样的页面: http://wiki.python.org/moin/SimplePrograms 在各处使用大括号。我了解方括号和规则的圆括号,但是我不知道“定义字典”的含义或它们应该代表的含义。 问题答案: Python中使用“大括号”来定义字典。字典是一种将一个值映射到另一个值的数据结构,就像英语词典如何将单词映射到其定义

  • 问题内容: 真正想知道但从未发现的是PHP中的快捷方式。 我目前正在用一个循环在一个函数内编码一个函数。我试图省略花括号,就像您在if / else控制结构中所做的那样,它可以正常工作。没有错误。 现在,我尝试以相同的方式使用它,但在其中放置了一个if / else块。再次,工作,没有错误。 然后,我以为“这为什么起作用?” 省略了分号。还在工作。因此,我尝试在ifeach循环中使用if / el

  • 问题内容: 不知道这是否是Mozilla特定的JS语法,但是我经常发现以这种方式声明变量,例如,在附加SDK docs中: 并在各种Chrome Javascript中(使用代替的语句), 我发现这很令人困惑,但即使在MDN上,我也找不到有关这两种语法的任何文档。 问题答案: 它们都是JavaScript 1.7的功能。第一个是block-level variables: : 允许您声明变量,将其

  • 问题内容: 为什么每个人都告诉我编写这样的代码是一种不好的做法? 我省略花括号的最大论据是,有时花括号可能是花括号的两倍。例如,以下代码为C#中的标签绘制发光效果。 您还可以获得链接usings在一起的额外好处,而不必缩进一百万次。 花括号的最常见参数涉及维护编程,以及在原始if语句及其预期结果之间插入代码会引起的问题: 问题: 想要使用该语言提供的更紧凑的语法是错误的吗?设计这些语言的人很聪明,

  • 问题内容: 我在jQuery文件中找到了这个: 花括号做什么? 问题答案: 在您的情况下,这是一个传递给CSS函数的对象。 在这里你也可以使用 这是物体的另一个例子

  • 我有一个字符串: 我想匹配花括号外的所有逗号。 我想要的输出是: 我尝试了: 但输出不同: 谢谢你。