js 的call apply 问题

为什会出现这种情况
console.log.apply(console.log, [12,34,5])
// 打印的是数组里的值 12 34 5
console.log([12,34,5])
// 打印的是一个数组 [12, 34, 5]

阅读 2.6k
5 个回答

apply传参本身就是数组。
console.log.apply(console.log, [12,34,5])相当于
console.log(12,34,5);
要打印数组应该这样:
console.log.apply(console.log, [[12,34,5]])

console.log() // 控制台输出
fn.apply(thisArg, [argsArray])   // this值,数组或类数组  传递给fn函数的是argsArray的的元素 
元素依次为 12 34 5   
console.log(12,34,5)

懂了么?
我的理解是,当函数调用fn.apply(context, ArrayLikeObj)相当于fn(...ArrayLikeObj)

console.log.apply(console.log, [12,34,5])相当于

function log(a) {
    console.log(a)
}
console.log.apply(log, [12,34,5])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题