【问题标题】:Javascript usage of curly braces花括号的Javascript用法
【发布时间】:2014-10-07 05:34:04
【问题描述】:

我正在阅读Eloquent Javascript,我对这段话和花括号的用法有疑问:

这意味着花括号在 JavaScript 中有两种含义。在语句的开头,它们开始一个语句块。在任何其他位置,它们都描述了一个对象。幸运的是,以花括号对象开头的语句几乎没有用处,而且在典型的程序中,这两种用法之间没有歧义。

这段话:

类型对象的值是属性的任意集合,并且 我们可以随意添加或删除这些属性。一种创建方式 一个对象是通过使用花括号表示法。

var journal = [
  {events: ["work", "touched tree", "pizza",    
            "running", "television"],    
   squirrel: false},    
  {events: ["work", "ice cream", "cauliflower",    
            "lasagna", "touched tree", "brushed teeth"],    
   squirrel: false},    
  {events: ["weekend", "cycling", "break",    
            "peanuts", "beer"],    
   squirrel: true},    
  /* and so on... */   
];

上面的代码看起来像是一堆属性和它们的数组值。括号在做什么?他们似乎将每个属性分组为数组值和布尔值。那是花括号在做什么吗?根据定义,它们是在开始一个语句块还是在描述一个对象?用大括号描述一个对象是什么意思? javascript 中的对象是否只是属性的集合,其中 1 足以使其成为对象?

【问题讨论】:

  • 可以这样想:方括号用于表示数组,花括号用于表示键值映射。
  • 如今,在块周围使用它们会很有用,因为函数的块级范围已成为大多数浏览器的默认设置。例如:(function(){ 'use strict';{ function f3(){} } alert(typeof f3 === "undefined");}());
  • 为什么我被否决了?我意识到我是社区的新手,但我认为仅仅因为一个问题很简单并不一定意味着它值得一票否决。

标签: javascript curly-braces


【解决方案1】:

您发布的代码中只有一条语句:journal 的声明和赋值。它被初始化为一个对象数组,每个对象都有两个属性:eventssquirrel。假设“等等”继续这种模式,每个events 属性被初始化为一个字符串值数组,每个squirrel 属性被初始化为一个布尔值。

每对(方)括号定义一个数组,每对花括号(大括号)定义对象。就是这样。

关于你的问题“用大括号描述一个对象是什么意思?”,这在documentation of JavaScript object literals中有描述。

【讨论】:

    【解决方案2】:

    这里的每个括号都在定义/创建一个对象。

    括号只是用来创建那个对象,就这么简单。你可以只看它的面值。

    This article 非常适合真正了解事物的本质(为什么使用它们以及它们是什么替代品)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      相关资源
      最近更新 更多