Javascript 什么是对象([]);做

Javascript 什么是对象([]);做,javascript,arrays,Javascript,Arrays,在MDN中一些数组原型函数的几个polyfill示例中,有以下两行(例如:): 我想第一个例子是自动装箱(?)。但是如果这个始终是一个数组,那么它的目的是什么呢 第2行,这与: var length = list.length || 0; 谢谢 这使得在遵循规范的同时,可以在严格模式下对非数组的对象调用函数(使用call或apply) 如果它是数组的实例或类似数组的对象,则不会更改任何内容 但是在这里,由于这一行确保列表是一个对象,因此检查此既不是null也不是未定义的,并且由于其他值不会导致

在MDN中一些数组原型函数的几个polyfill示例中,有以下两行(例如:):

我想第一个例子是自动装箱(?)。但是如果
这个
始终是一个数组,那么它的目的是什么呢

第2行,这与:

var length = list.length || 0;

谢谢

这使得在遵循规范的同时,可以在严格模式下对非数组的对象调用函数(使用
call
apply

如果它是
数组
的实例或类似数组的对象,则不会更改任何内容

但是在这里,由于这一行确保
列表
是一个对象,因此检查
既不是
null
也不是
未定义的
,并且由于其他值不会导致以下访问失败(除了
对象(this)
无法解决的非常特殊情况,如失败的访问器),我不确定这有什么意义。可能是在检查之前设置的,也可能只是在特殊的本机对象的情况下设置的。另一种可能性是,它(也?)严格地遵循一步一步的原则,并希望应用


list.length>>0
优于
|124; 0
,因为它舍入到最接近的较低正整数(在32位范围内)。我不知道为什么这里没有使用
>
,因为迭代到4294967295似乎比迭代到-1(即不要浪费时间)要好。

谢谢!关于位移位vs或?
>
的任何想法都更好,因为结果总是有限的非负整数,而当您说“可能调用函数”时,
|
会很高兴地返回字符串或对象您指的是哪个函数?@AmmarCSE,Denys表示可以在非
数组
的对象上调用多填充函数
find
。例如,阅读这个关于调用数组的函数
join
over object
arguments
的流行答案,该函数不是数组(并且在原型中没有所有函数),尽管支持
length
和index@denyssequeret,但我仍然发现调用
object()
函数的原因相当薄弱。我只看到polyfill内部的
null
未定义的
时的区别。对于所有其他情况,
对象(this)
不会改变
this
的性质,因为结果将仅用于获取
长度
属性和对雪佛龙操作符进行索引,我找到的最佳答案是
var length = list.length || 0;