gpt4 book ai didi

javascript - 为什么匿名函数本身是 javascript 中的语法错误?

转载 作者:数据小太阳 更新时间:2023-10-29 04:04:37 24 4
gpt4 key购买 nike

如果我尝试执行一个只有一个源代码行是一个对象的脚本:

{prop:'value'}

它解析良好(在 V8 和 UglifyJS 中)。同样,我可以将字符串或数字作为源代码单独放置,并且不会报告任何语法错误。

但是,V8 和 UglifyJS 都提示自己:

function(){}

我收到 Uncaught SyntaxError: Unexpected token (.

为什么第一个示例中的对象正常时会中断? javascript 中的函数不只是对象吗?

我意识到声明一个匿名函数而不执行它不会有任何作用;那不是问题。我想知道为什么会导致解析错误。

最佳答案

来自 ECMAScript 规范,关于表达式语句的第 12.4 节:

Note that an ExpressionStatement cannot start with an opening curly brace because that might make it ambiguous with a Block. Also, an ExpressionStatement cannot start with the function keyword because that might make it ambiguous with a FunctionDeclaration.

尽管函数只是对象,但请记住,您可以自行声明函数,而无需真正在表达式中使用它们的对象。这就是歧义所在。当然,你永远不能自己声明一个匿名函数(因为你无论如何都不能引用它),但是由于我在规范中找不到任何区分匿名函数和命名函数声明的东西,我怀疑这个适用于两者。

为了解决歧义,您需要将其括在括号中,因此它将始终被视为表达式:

(function(){})

关于javascript - 为什么匿名函数本身是 javascript 中的语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12329731/

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