js下面的区别,一个可以执行,一个不行

functionjam(){
console.log("ok");
}()
jamlee2015/2/1422:49:11
(functionjam(){
console.log("ok");
}())
小怪兽爱吃肉
浏览 286回答 2
2回答

一只斗牛犬

实际上,第一种写法会抛出SyntaxError。functionjam(){console.log("ok");}()在JavaScript代码解析的时候,如果碰到function开头的语句,默认为认为这是一个函数声明。所以在编译器看来,上述的代码就是:functionjam(){console.log("ok");}()也就是说,在编译器看来,这个语句做了两件事情:声明了一个jam()函数使用()运算符声明函数是合法的,但是使用()运算符时出错了。在JavaScript中,()使用有两种场景,一种是作为函数调用符,一种是分隔表达式(提高优先级)。而上面这个代码中,无论哪个场景都不符合,所以抛出了一个语法错误。第二段代码是立即执行的匿名函数表达式(IIFE)。更详细的可以参考这篇文章:[译]立即执行函数表达式(IIFE)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript