为什么执行console.log()polyfills不能使用Function.apply()?(W

2019-07-30 12:22发布

我一直在寻找一些流行的console.log()包装/ polyfills:

  • 保罗爱尔兰的
  • 我德国的
  • 克雷格的短靴

我注意到,所有的人都接受多个arguments ,但他们都做这样的事情:

console.log(arguments);

这导致了这样的(在Chrome)输出:

然而,在现代浏览器,如Chrome或Firefox,至少console.log()也接受多个参数,所以,这将产生(恕我直言)高级输出:

console.log.apply(console, arguments)

这导致了这样的(在Chrome)输出:

有什么特别的原因,我应该避免使用console.log.apply()与多个参数? 或者这这只是一个口味或保存字节事?

Answer 1:

我个人建议你只使用.apply()时,你必须: .apply()是传递一个数组作为函数的参数的唯一途径。 如果你并不需要传递一个数组,然后只需使用console.log() 这是更简洁,这是一个直接调用。



Answer 2:

请注意, apply需要的参数数组

所以调用console.log(args)必须console.log.apply(console, [args])而不是console.log.apply(console, args)的行为等于-在你的例子在阵列中的每个项目变成他自己的论点适用。

在另一方面,你也可以拨打console.log("foo", "bar", $("body"))



文章来源: Why do console.log() polyfills not use Function.apply()?