var dd=function() { alert("hello, world."); } (); // 可以弹出var nextId = function() { var id = 1 return function() { return id++ } }();我的意思是:如何通过表达式来直接调用这个函数?上面那个,直接在表达式后面价格括号就可以调用,为什么这个不可以呢?这个如要怎么像上面那个那样,直接在表达式上调用?这里不太懂,正在研究,希望懂的前辈给解释下~感谢
1 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
第一段
var dd = function() { alert("hello, world."); } ();
function() {}
定义了一个函数,在后面加上括号会立即执行,不过一般为了好看,都会写成
(function() { alert("hello, world."); })();
因为这个函数没有返回值,所以 dd
的值是 undefined
。其实要不要前面的 var dd =
都会执行。
第二段
var nextId = function() { var id = 1; return function() { return id++; }; } ();
这里定义了内外两个 function
,其中外面的 function
的执行结果是定义内部的 function
并返回出来,也就是说,执行的结果是一个 function
。
所以这一段执行之后 nextId
就是一个函数,
typeof nextId === "function";// true
这个时候,如果执行 nextId()
会得到依次递增的 ID 值。
如果你执行 nextId.toString()
可以看到 nextId
的定义,也就是上面定义在内部的那个函数
nextId.toString();// "function () { return id++; }"
添加回答
举报
0/150
提交
取消