首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Math.floor() |0

Math.floor() |0
EN

Stack Overflow用户
提问于 2013-04-17 04:50:23
回答 1查看 3.3K关注 0票数 9

我经常在JavaScript中看到这样的情况:

代码语言:javascript
复制
var val = (myvar / myothervar) | 0;

据我所知,这是在JavaScript (如~~>> 0等)中构建值的众多捷径之一。然而,我最近看了一段代码,它做到了这一点:

代码语言:javascript
复制
var val = Math.floor(myvar/ myothervar)|0;

他们使用了Math.floor(),然后还对0进行了逐位OR运算。作者这样做了很多次,所以他们不只是犯了一次打字错误。同时做这两件事你会得到什么?

出于好奇,我所指的代码可以在here中找到

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-17 04:52:02

你可能没有想过:

  • Math.floor(NaN) == NaN (好吧,不是真的,但Math.floor(NaN)NaN)
  • Math.floor(NaN) | 0 == 0

也适用于Infinity

正如@apsiller所指出的,这可能是为了消除Infinity

代码语言:javascript
复制
var x = 1;
console.log(Math.floor(1 / x));      // 1
console.log(Math.floor(1 / x) | 0);  // 1
x = 0;
console.log(Math.floor(1 / x));      // Infinity
console.log(Math.floor(1 / x) | 0);  // 0
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16046825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档