gpt4 book ai didi

javascript - 为什么 var o = {"a": "b"}; executes and does what I expect, 而 eval ('{"a": "b"}') fails?

转载 作者:行者123 更新时间:2023-11-30 07:16:27 24 4
gpt4 key购买 nike

当我使用 evals 修复旧代码中的错误时,我意识到表达式计算有些奇怪。

如果您打开 JavaScript 控制台并输入

eval ('{"a": "b"}')

{"a": "b"}

你得到

SyntaxError: Unexpected token :

但是如果你输入

var o = {"a": "b"};

语句以预期的结果执行。

如果你输入

(function() {return {"a": "b"};})()

你得到:

Object {a: "b"}

此外,如果您键入 {a: "b"},您将得到“b”。我完全不明白。

我曾经认为 var o = {"a": "b"}; 的意思是“计算表达式 {"a": "b"}并将结果分配给 o

但显然它比这更复杂。我试图在语言规范中找到关于这一点的解释,但我认为我没有使用正确的措辞进行搜索。

任何人都可以提供线索,说明为什么我可以将本身不是有效可评估表达式的值返回或分配给变量吗?

最佳答案

原因是花括号在 Javascript 中有两个用途:它们围绕着对象字面量,并且它们也围绕着代码块。

控制台和 eval 将大括号解释为代码块的开始,但您输入的是对象文字。这是导致错误的原因。

关于javascript - 为什么 var o = {"a": "b"}; executes and does what I expect, 而 eval ('{"a": "b"}') fails?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com