为什么console.log()填充不使用Function.apply()?
我一直在寻找一些流行的console.log()
包装/ polyfills的:为什么console.log()填充不使用Function.apply()?
我注意到,所有的人都接受多个arguments
,但他们全部做这样的事情:
console.log(arguments);
导致输出像这样(在Chrome):
然而,在现代浏览器,如Chrome或Firefox至少,console.log()
也接受多个参数,所以,这将产生(恕我直言)优越输出:
console.log.apply(console, arguments)
这导致输出像这样(在Chrome):
为什么我应该避免使用带有多个参数的console.log.apply()
有什么特别的理由吗?或者这只是一个品味或保存字节的问题?
我个人建议你只使用.apply()
当你必须:.apply()
是传递数组作为函数参数的唯一方法。如果你不需要需要来传递一个数组,那么就使用console.log()
。它不那么冗长,而且是直接调用。
那么,我就是这么想的,但认识JS比我更好的人不会这样做,所以我想知道为什么。 – 2013-01-02 18:21:40
请注意,apply
需要一个数组的论据!
因此呼吁console.log(args)
必须console.log.apply(console, [args])
,不console.log.apply(console, args)
表现平等 - 在数组中的例子中,每个项目变成他自己的申请理由。
在另一方面,你也可以拨打console.log("foo", "bar", $("body"))
@PaulIrish上的console.log VS console.log.apply有什么想法? – 2012-08-22 18:56:07
这可能不是主要原因,但IE中的console.log属性没有Function原型。即,它没有“应用”功能。 – Sam 2012-09-26 22:24:43
呃,这可能是一个很好的理由。 – 2012-09-27 00:09:39