为什么结果与此装饰函数中的预期不一致
why the result is inconsistent with expected in this decorate function?
这是一个链函数调用,我希望"--------"和下一个"--------"之间的所有输出块都应该完全相同,但当我尝试运行它时,输出的第一个块"-------"之间的内容与下面的所有输出区块不同?
前两行输出是:
function(){alert('original')}
function(){alert('original')}
--------------
以下是:
function(){alert('original')}
function m(){
console.log(f.toString());
console.log(fun1.toString());
console.log('--------');
return m;
}
--------------
.... (repeat)
--------------
代码如下:
<script>
var fun1 = function(){alert('original')};
function decoratefun (f){
return (function m(){
console.log(f.toString());
console.log(fun1.toString());
console.log('--------');
return m;
})();
}
var fun1 = decoratefun(fun1);
fun1()()()();
</script>
m
的第一次调用发生在decoratefun(fun1)
的调用内部。它将记录函数f
和fun1
的当前值,该值尚未重新分配为m
。
要"修复"此问题,请使用
function decoratefun (f){
return function m(){
console.log(f.toString());
console.log(fun1.toString());
console.log('--------');
return m;
};
// ^ no invocation here
}
而
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- 为什么会出现错误,“UncaughtTypeError:undefined不是函数”
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- Uncaught TypeError:undefined不是函数-ember js
- cordova:例外:财产'requestFileSystem'的[对象全局]不是函数
- 未捕获的类型错误:$(..).dataTable不是函数
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- jQuery 引导网格排序函数不一致
- 日期(日期字符串)构造函数不一致
- 为什么结果与此装饰函数中的预期不一致
- Json在警报语句和函数之间不一致
- 函数的返回点不一致
- 在setInterval函数内部使用时,Jquery延迟是不一致的
- javascript setCaret函数不一致
- Chrome JavaScript 绑定函数不一致
- 角度指令链接()函数接收到不一致的作用域
- 函数返回点不一致的JavaScript
- Internetexplorer-Javascript:将命名函数分配给变量(命名函数表达式)时不一致