//方式一:
function B(callback) {
if(typeof callback === "function") {
callback() ;
}
}
//方式二:
function B(callback) {
if(typeof callback === "function") {
callback.apply(null,arguments) ;
}
}
//方式三:
function B(callback) {
if(typeof callback === "function") {
callback.call(null,arguments[0],arguments[1]) ;
}
}
谢谢大家!
1
xpol 2016-08-11 09:31:34 +08:00 via Android
好像跟 this 有关。
|
2
ms2008 2016-08-11 10:08:57 +08:00
装饰器, 2 和 3 的区别就是:
apply 参数是 array ; call 参数按顺序传入 |
3
q397064399 2016-08-11 10:13:19 +08:00 via iPhone
看解释器吧,除了堆栈还有栈的建立退出之外,想不到能有什么区别了
|
4
sarike 2016-08-11 10:32:20 +08:00
就如何传递参数方面,主要还是看应用场景。
看次问题重点还是要关注函数内 this 指向。 `callback()` 这样在 callback 内的 this 就是全局对象。 `callback.call(null)` 或者 `callback.apply(null)` 如果是非严格模式, this 也是全局对象,如果是严格模式的话, this 就是 null 了。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode |
5
just4test 2016-08-11 11:02:42 +08:00
楼上说的对。
另外 1 没有参数 2 可以有任意多个参数 3 只能是两个参数 |