【发布时间】:2019-05-12 13:44:14
【问题描述】:
我正在研究 JS 装饰器,但不明白包装器如何访问内部函数参数。 sn-p 有效,但我不明白为什么匿名函数 'function(val)' 可以访问 val,slow() 的参数。
// https://codepen.io/lideebe/pen/VOjGvb
// simple function that gets wrapped
function slow(x){
return x * 3;
}
// the wrapper function
function cacheDecorator(func){
return function(val){ // How does this anonymous function get access to val?
return func(val)
}
}
// do the wrap
slow = cacheDecorator(slow);
// call the function
console.log(slow(2));
输出是 6,这是正确的。
【问题讨论】:
-
Javascript 闭包在工作中。
-
dup 中的第一个示例应该会为您说明问题。但本质上
cacheDecorator返回一个函数,所以slow设置为内部匿名函数,可以使用slow(2)调用
标签: javascript decorator