var foo = function () { var local = “局部变量”; (function () { console.log(local); }()); };
请问第3,4行的括号有什么用处啦?
让内部的匿名函数自执行
应该是 (function () {})() 而不是 (function () {}())
(function () {})()
(function () {}())
(function () {})() 匿名自执行函数,由于(function(){})是表达式,js会去对它求解得到返回值,由于返回值是一个函数,故遇到();时会被执行.
@SweetHeartXi 谢谢,明白了
不过这段代码写法木有必要
两种方式都可以
1,(function(){})() 2,(function(){}())
不可以的:
function() {}()
可以的:
var func = function() {}()
最开始的两种写法把函数生声明化为了函数表达式->函数声明是不可以用()自调用的,因为()会被忽略
//Throw error //function() { // console.log('invoked'); //}() //invoked //var func = function() { // console.log('invoked'); //}() //invoked //(function() { // console.log('invoked'); //}()) //invoked //(function() { // console.log('invoked'); //})()
@dayuoba 这个问题我以前也研究过,结论一样。但是你这次给出学名了~~
优先运算。2楼误导人家。这样写也不可以的,不了解不要轻言。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
让内部的匿名函数自执行
应该是
(function () {})()而不是(function () {}())(function () {})() 匿名自执行函数,由于(function(){})是表达式,js会去对它求解得到返回值,由于返回值是一个函数,故遇到();时会被执行.
@SweetHeartXi 谢谢,明白了
不过这段代码写法木有必要
两种方式都可以
不可以的:
可以的:
最开始的两种写法把函数生声明化为了函数表达式->函数声明是不可以用()自调用的,因为()会被忽略
@dayuoba 这个问题我以前也研究过,结论一样。但是你这次给出学名了~~
优先运算。2楼误导人家。这样写也不可以的,不了解不要轻言。