DLe*_*rdi 3 javascript parentheses
为什么会返回语法错误:
function(foo){console.log(foo)}
Run Code Online (Sandbox Code Playgroud)
我希望这会返回函数的值,因此返回自身,而不是将它分配给任何东西,但我得到一个"SyntaxError:Unexpected token"
但这有效:
(function(foo){console.log(foo)})
Run Code Online (Sandbox Code Playgroud)
请解释这些包装括号的用途.我被告知,parens习惯于"提高可读性",但在这种情况下肯定有更多的目的.
关于使用about(),请进一步详细说明吗?假设您要将这行代码翻译成散文,()读取的内容是什么?我也试图向其他人描述这个概念,并且需要传达其意义,以便每个人都能理解它.我试图回答的问题是()的意思是什么?它们是否具有语义价值,它是什么?
您的第一个示例是函数声明.它没有标识符,这是语法错误.这是函数声明的语法(注意标识符不是可选的):
功能声明:
functionIdentifier(FormalParameterList opt){FunctionBody}
通过将其包装在括号中,您可以将其转换为函数表达式(匿名函数).您可以通过在以下位置之后添加一对调用括号来执行它:
(function(foo){console.log(foo)})("hello"); //Will log 'hello'
Run Code Online (Sandbox Code Playgroud)
这是函数表达式的gammar(现在标识符是可选的):
FunctionExpression:
function标识符选择(FormalParameterList opt){FunctionBody}
括号如何将函数声明转换为函数表达式
在这种情况下,括号被解析为" 分组运算符 ".分组运算符的语法如下:
PrimaryExpression:
(表达)
分组运算符只能包含表达式,因此您的函数被解析为表达式而不是声明(显然,在您的确切示例中,函数不能是声明,因为它没有标识符).
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |