JavaScript 中的闭包:再举一个例子
Closures in JavaScript: one more example
function say667() {
console.log(1);
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() {
console.log(num);
}
num++;
return sayAlert;
}
say667();
为什么这不起作用?它控制台日志1
但不控制台.log num
.
你返回的是实际的函数,你没有调用函数,你需要在"sayAlert"之后添加((
function say667() {
console.log(1);
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() {
console.log(num);
}
num++;
return sayAlert();
}
say667();
小提琴
而不是return sayAlert;
你必须调用return sayAlert();
(function() {
console.log(1);
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { console.log(num); }
num++;
return sayAlert();
})();
在这里,此函数将自动调用。
或者和你的,
function say667() {
console.log(1);
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() {
console.log(num);
}
num++;
return sayAlert();
}
say667();
为什么这不起作用?
由于say667()
确实返回sayAlert
函数(闭包(,因此不会调用它。尝试
var say = say667(); // logs 1 and returns the function
say(); // logs 667
say(); // logs 667 again
你可以称呼say667()();
但从垃圾收集者的角度来看,这不是很好。最好从say667函数中return sayAlert()
。
相关文章:
- 使用Google闭包编译器包含一个Ecmascript 6类
- 在谷歌地图示例中为 Ajax 调用制作一个 JavaScript 闭包
- 闭包中的本地变量从外部更改.这是一个javascript错误,或者我做错了什么
- 将一个简单的函数声明形成JavaScript中的闭包
- 递增并存储一个“;私人的“;使用闭包的变量
- 为什么需要在这个闭包中创建一个变量
- 这是闭包的一个很好的例子吗?
- 为什么允许通过原型继承访问另一个闭包范围内的私有变量
- 为什么这不是一个javascript闭包
- JavaScript 中的闭包:再举一个例子
- 这是一个JavaScript闭包错误吗?
- 闭包的意外行为:回调保存最后一个值
- Javascript - 在闭包中使用函数构造函数是一个坏主意吗?
- 我们是否可以使用谷歌闭包创建一个带有复选框和组合框的对话框
- 向Jquery$.each传递一个闭包
- 我如何告诉谷歌闭包编译器不要删除一个变量
- Is回调函数始终是一个闭包
- ES2015导出的类是否创建了一个闭包
- 我如何把所有这1200+行自定义javascript到一个闭包,所以没有全局变量
- 一个闭包中的jquery tmpl