我是个javascript新手,读别人的javascript代码,有一个语法不太理解,上网查也不知道怎么查,只好麻烦大家了。
var funcName = function(){ ... }();
类似于上面这种形式是什么意思呢。 var funcName = function(){ ... } 我可以理解是定义函数。后面怎么还有一对括号 () 呢?
var funcName = function(){ ... }
()
直接看代码吧:
var fn = function() { // xxxxxxx return "abc"; }() console.log(fn) // "abc"
如果没有括号,那就是给匿名函数起个名字叫fn,如果有括号就表示调用了匿名函数,将返回值赋给fn
PS:不要修改答案啊,改了就文不对题了,亲~
给你一个更直观的例子
function getA(){ return "a"; } var name=getA(); console.log(name);
var name =function(){return "a"}(); console.log(name);
上面两个例子是等效的,name都会被赋值为"a",但是第二种方法比第一种简单。鉴于你是初学者,这里我就不提什么是闭包了,怕你搞混淆。
function(){}这个代码表示定义一个函数。 var funcName = function(){ ... }表示将函数赋值给funcName。 function(){...}()表示定义一个匿名函数并立即执行。 var funcName = function(){ ... }()表示定义一个匿名函数并立即执行, 并把结果赋值给funcName。
这个是先用function(){}定义了一个匿名函数,然后再将这个匿名函数赋值给了funcName这个变量的意思。最后那个()表示闭包。关于闭包,你可以看看这篇日志:http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
function(){}
funcName
直接看代码吧:
如果没有括号,那就是给匿名函数起个名字叫fn,如果有括号就表示调用了匿名函数,将返回值赋给fn
PS:不要修改答案啊,改了就文不对题了,亲~
给你一个更直观的例子
上面两个例子是等效的,name都会被赋值为"a",但是第二种方法比第一种简单。鉴于你是初学者,这里我就不提什么是闭包了,怕你搞混淆。
function(){}这个代码表示定义一个函数。
var funcName = function(){ ... }表示将函数赋值给funcName。
function(){...}()表示定义一个匿名函数并立即执行。
var funcName = function(){ ... }()表示定义一个匿名函数并立即执行, 并把结果赋值给funcName。
这个是先用
function(){}
定义了一个匿名函数,然后再将这个匿名函数赋值给了funcName
这个变量的意思。最后那个()
表示闭包。关于闭包,你可以看看这篇日志:http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html