为了账号安全,请及时绑定邮箱和手机立即绑定

关于表达式调用函数的问题

关于表达式调用函数的问题

神不在的星期二 2018-08-10 18:09:41
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++; }"


查看完整回答
反对 回复 2018-09-27
  • 1 回答
  • 0 关注
  • 625 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信