return function(){
var newParams = Array.prototype.slice.call(arguments);
params = params.concat(newParams);
objFunc.apply(obj,params);
}
上面这段代码中,var newParams = Array.prototype.slice.call(arguments) 后面必须是";"分号 用逗号","则报错说cancat undefined,why?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
变量提升的锅啊~~
你这都已经多里了var定义了,定一个变量还是一个表达式,本应相互之间都不要有关联(用逗号连接时)
分号和逗号的区别在于:
这里a,b,c都是局部变量;
这里除了a为局部变量外,b和c都为全局变量。
而你出现undefined是因为javascript是存在声明提前的,即newParams,params都已经声明且为undefined。
undefined是不存在concat方法的。
你这里最好就是声明归声明,表达式归表达式,不要混在一起。
在这里你如果 不用分号,用逗号就相当于 共用 var 声明变量,按你的写法这就造成 该变量的表达式被赋给该变量,你想下其执行顺序,不难理解为什么报错了。而如果你这里 用分号 ,那这就是划分了代码片段了,而 js里window为全集对象,所以你这样写 param = ...; 就相当于 window.param = ... ;我讲到这里,其他你再自己想想。