javascript - add 是个变量还是个方法?
大家讲道理
大家讲道理 2017-04-11 11:58:34
[JavaScript讨论组]




菜鸟教程(runoob.com)



局部变量计数。

0

为什么 var add = (function()....)() 怎么写?
调用时,为什么是 add() ?
求指教

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(4)
PHPz

函数名本身就是一个变量,所以你其实应该看看的是自执行函数。

外层函数自执行,然后这个函数返回了另外一个函数, 再把这个返回的函数赋值给变量add。

这就好比:

    var add = function() {};
    add();

这样的代码是不是很好理解? 这就是个函数表达式而已。

迷茫

在Javascript中,函数是第一公民;函数也是一个对象,可以当作函数参数或者作为返回值,在这里就使用了当作返回值的特性;

当在一个函数中声明另一个函数,内部函数可以访问外部函数声明的变量,构成作用域链

将一个函数作为另一个函数返回值时,构成闭包

这里使用了立即执行函数,这个立即函数中声明的变量也就成为了私有变量,只能通过闭包才能访问,这就做了一个安全变量。

因为立即执行函数返回的是另一函数,所以要用add()才可以运行函数;
里面涉及的知识点还是比较多的,可以看一下其他资料理解一下。

大家讲道理

这典型的闭包的用法,变量counter在立即执行的匿名函数中可见,外部访问不到,并且返回一个函数来处理这个局部变量。至于你的疑问是写法:

这里相当于:

function inner(){
    var counter = 0;
    return function () {return counter += 1;}
}

var add = inner(); // ==> function () {return counter += 1;}
add() // 执行return的函数
阿神

一个变量 接受匿名函数返回的值
不过你调用错了
add后面不应该加()

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号