node.js - node中一个数和0进行按位或运算为什么能够取整啊?
阿神
阿神 2017-04-17 13:59:26
[Node.js讨论组]

如图所示在node.js的REPL模式中的执行结果:

感觉这个可以代替parseInt了,可以避免出现parseIntNaN的问题。

阿神
阿神

闭关修行中......

全部回复(1)
黄舟

首先我们来看看对于按位计算的操作符的描述:

注意我选中的部分,“操作数被转换成32位整数”,这就是你疑问的关键。

至于说是否可以完全替代parseInt,个人从功能上应该是可以替代(可能考虑不周,期待大神指点);但从软件工程角度讲,我并不建议这么写,除了炫技外,在各javascript运行环境里没有明显的性能优势(js通常不用来搞计算密集型工作),但缺点就是让人看不懂!!而且这是最大的问题,代码首先是给人看的,其次才给机器读,关于什么是好代码,可以看看Robert C. Martin的clean code

补充:

关于非数字类型是怎么默默的转化成整数的部分,下面ECMAScript讲到了一些:

不敢保证这次找到的资料一定准确,但八九不离十:

字符串在转换成整数时,遵循上图的原则,当第一步使用ToNumber原则转换后,得到的实际是NaN,注意我选中的部分,第二步就就将NaN换成0了。 我的理解,这就是为什么'abc' | 0 === 0的原因。

文档在这:spec

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号