扫码关注官方订阅号
菜鸟教程(runoob.com) 局部变量计数。 计数! 0
局部变量计数。
0
为什么 var add = (function()....)() 怎么写?调用时,为什么是 add() ?求指教
光阴似箭催人老,日月如移越少年。
函数名本身就是一个变量,所以你其实应该看看的是自执行函数。
外层函数自执行,然后这个函数返回了另外一个函数, 再把这个返回的函数赋值给变量add。
这就好比:
var add = function() {}; add();
这样的代码是不是很好理解? 这就是个函数表达式而已。
在Javascript中,函数是第一公民;函数也是一个对象,可以当作函数参数或者作为返回值,在这里就使用了当作返回值的特性;
当在一个函数中声明另一个函数,内部函数可以访问外部函数声明的变量,构成作用域链;
将一个函数作为另一个函数返回值时,构成闭包;
这里使用了立即执行函数,这个立即函数中声明的变量也就成为了私有变量,只能通过闭包才能访问,这就做了一个安全变量。
因为立即执行函数返回的是另一函数,所以要用add()才可以运行函数;里面涉及的知识点还是比较多的,可以看一下其他资料理解一下。
这典型的闭包的用法,变量counter在立即执行的匿名函数中可见,外部访问不到,并且返回一个函数来处理这个局部变量。至于你的疑问是写法:
counter
这里相当于:
function inner(){ var counter = 0; return function () {return counter += 1;} } var add = inner(); // ==> function () {return counter += 1;} add() // 执行return的函数
一个变量 接受匿名函数返回的值不过你调用错了add后面不应该加()
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
函数名本身就是一个变量,所以你其实应该看看的是自执行函数。
外层函数自执行,然后这个函数返回了另外一个函数, 再把这个返回的函数赋值给变量add。
这就好比:
这样的代码是不是很好理解? 这就是个函数表达式而已。
在Javascript中,函数是第一公民;函数也是一个对象,可以当作函数参数或者作为返回值,在这里就使用了当作返回值的特性;
当在一个函数中声明另一个函数,内部函数可以访问外部函数声明的变量,构成作用域链;
将一个函数作为另一个函数返回值时,构成闭包;
这里使用了立即执行函数,这个立即函数中声明的变量也就成为了私有变量,只能通过闭包才能访问,这就做了一个安全变量。
因为立即执行函数返回的是另一函数,所以要用add()才可以运行函数;
里面涉及的知识点还是比较多的,可以看一下其他资料理解一下。
这典型的闭包的用法,变量
counter在立即执行的匿名函数中可见,外部访问不到,并且返回一个函数来处理这个局部变量。至于你的疑问是写法:这里相当于:
一个变量 接受匿名函数返回的值
不过你调用错了
add后面不应该加()