function(){alert}
vm701:1未接收的语法:功能语句 需要功能名称
(function(){alert})
我在控制台中输入了两行代码。第二行只是()
中的第一行。看看我得到了什么?()
在这里做什么。有人可以解释其语法吗?
Parens告诉JavaScript将它们之间的表达解释为表达式。如果表达式有效,则在表达式中执行指令。因此,在这种情况下,Parens将无效的语法变成函数表达式。
所有语言主表达式被象征化为覆盖的表达,并被评估为括号表达式。
主表达式
处理生产
PrimaryExpression[Yield] : CoverParenthesizedExpressionAndArrowParameterList[?Yield]
解释coverparentized exprysepryseandArrowParameterList是 使用以下语法精制:
ParenthesizedExpression[Yield] : ( Expression[In, ?Yield] )
遮盖的表达
静态语义:遮盖的表达
CoverParenthesizedExpressionAndArrowParameterList[Yield] : (Expression[In, ?Yield] )
返回解析词汇的结果 令牌流匹配
CoverParenthesizedExpressionAndArrowParameterList[Yield]
使用两者ParenthesizedExpression
或ParenthesizedExpression[Yield]
作为目标 符号取决于[产量]语法参数是否为 在CoverParenthesizedExpressionAndArrowParameterList
时出现 匹配。
评估括号表达式。
运行时语义:评估
PrimaryExpression : CoverParenthesizedExpressionAndArrowParameterList
令
expr
为CoveredParenthesizedExpression
CoverParenthesizedExpressionAndArrowParameterList
。返回结果 评估expr
。ParenthesizedExpression : ( Expression )
返回 评估
Expression
的结果。这可能是类型参考。请注意,此算法不将
GetValue
应用于 评估表达。这样做的主要动机是如此 诸如DELETE和TYPEOF之类的操作员可以应用于括号 表达式。
这种类型的函数称为匿名函数,通常分配给变量:
var fun1 = function(){ ... }
将匿名函数分配给变量fun1。
fun1
[Function: fun1]
因此,当您放置括号时,您正在执行该功能。
如果包装它,JavaScript将其评估为函数:
(function(){ ... })
[Function]
您还在用括号将功能包装:
的同一时刻执行它(function(){ ... })()
如果您不放置名称,分配或执行该名称,则将无法以后执行它,JavaScript将丢弃错误。