Ano*_*oop 2 javascript console
我在测试时看到了控制台(Chrome)的行为.如果我输入的console.log({key:'value'})是Object {key: "value"}我期望的打印 .但是当我直接键入{key:'value'}控制台时,'value'它只在我预期时打印Object {key: "value"}.
在IE10和FF中看到相同的行为.这种行为背后的原因是什么?
这是因为你的对象被解释为一个块语句,其中一个语句由一个以标签开头的字符串文字组成.
// v---block----v
{key: "value"}
// ^--label
Run Code Online (Sandbox Code Playgroud)
对于控制台将其解释为对象文字语法,它需要是表达式的一部分.如果你用parens包裹,你会得到预期的结果.
({key:"value"})
Run Code Online (Sandbox Code Playgroud)
边注:
这是非常奇怪的部分.声明是一个声明,因为它不返回任何内容.那它为什么会回归"value"呢?
在JavaScript中,语句具有类似于最终值的内容.(我不记得它究竟叫什么.)它不是程序代码中有用或可达的任何东西,但是当一个程序被评估时,该最终值将被返回到评估它的任何值.
当您使用eval()评估程序时也是如此.将返回其最终语句值.由于控制台中eval的代码是'd,它获得最终值并打印出来.
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |