Javascript定义然后调用语法
非常直截了当,所以问题是为什么Javascript定义然后调用语法,javascript,function,closures,call,Javascript,Function,Closures,Call,非常直截了当,所以问题是为什么 (function(){ console.log('a'); }()); // 'a' 或 工作,但是 function(){ console.log('a'); }() // SyntaxError: Unexpected token ( 给出一个错误?这种行为背后的含义是什么?或者这些附加括号的用途是什么?附加括号将函数转换为函数表达式,而不是函数声明 只有函数表达式可以用尾随的()立即调用,对此没有明确的解释。JavaScript根本无法成功解析func
(function(){ console.log('a'); }()); // 'a'
或
工作,但是
function(){ console.log('a'); }() // SyntaxError: Unexpected token (
给出一个错误?这种行为背后的含义是什么?或者这些附加括号的用途是什么?附加括号将
函数
转换为函数表达式,而不是函数声明
只有函数表达式可以用尾随的
()
立即调用,对此没有明确的解释。JavaScript根本无法成功解析function(){console.log('a');}()
。其他示例也会出现这种情况,例如:
1.toString(); // Syntax error
(1).toString(); // Works
(工作)代码的替代方案是(注意开头的!
):
1.toString(); // Syntax error
(1).toString(); // Works
!function(){ console.log('a'); }()