小编dot*_*ack的帖子

哈克将javascript编号转换为UInt32

编辑:此问题已过期,因为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位浮点值?或者有人能指出黑客入手的地方?

javascript bit-manipulation indexof uint32 operator-keyword

9
推荐指数
1
解决办法
7394
查看次数

Mozilla开发者页面 - 但绝不使用此表单

我的问题是关于Mozilla开发者页面:typeof operator

在示例章节中,每当完成以下表单的比较时,他们会对其进行注释:

typeof Number(1) === 'number'; // but never use this form!
Run Code Online (Sandbox Code Playgroud)

虽然他们从未解释过原因.很容易理解为什么这是一种愚蠢的类型检查方式,但我很好奇他们为什么多次不顾自己的评论.

任何线索都是受欢迎的.

注意:是因为Number()是一个没有new运算符的构造函数吗?(我的第一个猜测)

Ps:代码示例在Firefox的控制台版本27.0中进行了测试

javascript mozilla typeof type-conversion ecmascript-5

5
推荐指数
1
解决办法
101
查看次数