我不能在Dev Console中编写对象文字符号?

时间:2015-06-13 02:26:14

标签: javascript google-chrome-devtools

写这篇文章时出错:

{a:1, b:2}

但不是在我写这篇

的时候
{a:1}

我在Firefox和chrome中尝试过都会出错。

如果我将其分配给变量,则没有错误。

总是这样吗?,为什么会有错误。命令行中的nodejs没有错误。

我发现错误,一旦我复制粘贴json代码以更好地探索它。然后做了实验..(这必须是新的东西)

3 个答案:

答案 0 :(得分:3)

{ /* ... */ }block statement

如果您希望将其解析为object initialiser,则必须在需要表达式的位置使用它。

一些例子:

{} + ''; // `0`, parsed as block
'' + {}; // `"[object Object]"`, parsed as expression
{} * 1; // Error, parsed as block
1 * {}; // `NaN`, parsed as expression

将其解析为表达式并将结果对象作为结果的方法将其括在括号内:

({ /* ... */ })

答案 1 :(得分:2)

将对象包裹在括号中,如下所示:

Complex Types

原因是JavaScript使用大括号表示许多不同的东西,例如if-statements,for-loops,以及在你的情况下,对象声明。

当你没有进行任何类型的赋值时,换句话说,将它设置为等于变量,那么大括号意味着默认情况下不同。

要坚持JavaScript将这些浮动大括号视为对象文字符号,必须将大括号括在括号中。

答案 2 :(得分:1)

  

(这必须是新的东西)

不。这样:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
   

    <form onsubmit="return false;">
         
      <label for="username">Name</label>
      
      <input type="text" size="10" name="username">
      
      <input type="file" required />
      
      <input  type="submit" value="add" id="sbtn"/>
    
    </form>  

...也不被视为对象文字。您可以看到当您将其输入控制台时,因为控制台带有{a:1} 不是带有对象。它被解释为块语句的开头,后跟label 1,后跟表达式a:,然后是块的结尾。

考虑到这一点,你可以看到:

1

...被解释为块语句的开头,标签 {a:1, b:2} ,然后表达式a:后跟一个意外的1, b。< / p>

无论是在浏览器控制台中还是在html页面的脚本中都是如此。要让浏览器将整个事物视为表达式,只需将其包装在括号中:

: