node中一个数和0进行按位或运算为什么能够取整啊?
如图所示在node.js的REPL模式中的执行结果:
感觉这个可以代替parseInt
了,可以避免出现parseInt
的NaN
的问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如图所示在node.js的REPL模式中的执行结果:
感觉这个可以代替parseInt
了,可以避免出现parseInt
的NaN
的问题。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
首先我们来看看对于按位计算的操作符的描述:
注意我选中的部分,“操作数被转换成32位整数”,这就是你疑问的关键。
至于说是否可以完全替代
parseInt
,个人从功能上应该是可以替代(可能考虑不周,期待大神指点);但从软件工程角度讲,我并不建议这么写,除了炫技外,在各javascript
运行环境里没有明显的性能优势(js通常不用来搞计算密集型工作),但缺点就是让人看不懂!!而且这是最大的问题,代码首先是给人看的,其次才给机器读,关于什么是好代码,可以看看Robert C. Martin的clean code
补充:
关于非数字类型是怎么默默的转化成整数的部分,下面
ECMAScript
讲到了一些:不敢保证这次找到的资料一定准确,但八九不离十:
字符串在转换成整数时,遵循上图的原则,当第一步使用
ToNumber
原则转换后,得到的实际是NaN
,注意我选中的部分,第二步就就将NaN
换成0
了。 我的理解,这就是为什么'abc' | 0 === 0
的原因。文档在这:spec