函数 A 在函数 B 中执行的几种方式中实际上有那些区别呢?详情如下:

2016-08-11 09:24:04 +08:00
 palmers
//方式一:
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]) ;
     }
}

谢谢大家!

2039 次点击
所在节点    Node.js
5 条回复
xpol
2016-08-11 09:31:34 +08:00
好像跟 this 有关。
ms2008
2016-08-11 10:08:57 +08:00
装饰器, 2 和 3 的区别就是:
apply 参数是 array ; call 参数按顺序传入
q397064399
2016-08-11 10:13:19 +08:00
看解释器吧,除了堆栈还有栈的建立退出之外,想不到能有什么区别了
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
just4test
2016-08-11 11:02:42 +08:00
楼上说的对。
另外 1 没有参数
2 可以有任意多个参数
3 只能是两个参数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/298545

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX