use*_*291 1 javascript closures
在本文http://howtonode.org/why-use-closure中给出了一个例子:
function greeter(name, age) {
var message = name + ", who is " + age + " years old, says hi!";
return function greet() {
console.log(message);
};
}
// Generate the closure
var bobGreeter = greeter("Bob", 47);
// Use the closure
bobGreeter();
Run Code Online (Sandbox Code Playgroud)
为什么它比它更有价值
function greeter(name, age) {
var message = name + ", who is " + age + " years old, says hi!";
console.log(message);
}
greeter("Bob", 47);
Run Code Online (Sandbox Code Playgroud)
哪个更短,显然是一样的东西?或者它没有?
更新2:对于这种情况,它是否有用?在js中解决getter的丑陋语法
它没有做同样的事情.第二个示例强制您在现场打印输出,而第一个示例允许您延迟输出.
换句话说:在第一种情况下,您不需要在您拥有age和name在范围内的位置打印输出; 在第二个例子中,你这样做.
当然,你需要以某种方式"传输" bobGreeter到你实际调用greet它的范围,并且需要传输1值而不是2而不是最引人注目的参数.但请记住,在一般情况下,它对N来说是1.
还有许多其他原因使得闭包引人注目,这个特定的例子无法说明.
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |