编辑:此问题已过期,因为Polyfill示例已更新.我在这里留下这个问题仅供参考.阅读关于按位移位运算符的有用信息的正确答案.
题:
在Mozilla Array.prototype.indexOf页面的Polyfill示例中的第7行,他们对此进行评论:
var length = this.length >>> 0; // Hack to convert object.length to a UInt32
Run Code Online (Sandbox Code Playgroud)
但Mozilla上的按位移位规范明确指出运算符返回与左操作数相同类型的值:
移位运算符将其操作数转换为32位整数,并返回与左操作数相同类型的结果.
所以不应该长度接收标准的64位浮点值?或者有人能指出黑客入手的地方?
我的问题是关于Mozilla开发者页面:typeof operator
在示例章节中,每当完成以下表单的比较时,他们会对其进行注释:
typeof Number(1) === 'number'; // but never use this form!
Run Code Online (Sandbox Code Playgroud)
虽然他们从未解释过原因.很容易理解为什么这是一种愚蠢的类型检查方式,但我很好奇他们为什么多次不顾自己的评论.
任何线索都是受欢迎的.
注意:是因为Number()是一个没有new运算符的构造函数吗?(我的第一个猜测)
Ps:代码示例在Firefox的控制台版本27.0中进行了测试