Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了驳《我不是很懂 Node.js 社区的 DRY 文化》大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

今天在群里有人讨论方老师的文章《我不是很懂 Node.js 社区的 DRY 文化》,我也看了一遍,槽点太多,不知道如何下笔。

方老师分析了几个依赖最多的 npm 包,每个都只有不到百行代码

比如 is-odd,每周下载 300 万次,但是只有核心 5 行代码。而且依赖了每周下载 1000 万次的 is-number 库。

得出了一个结论:

首先第一条:

其实不仅仅是 JS 程序员,大部分程序员都不会准确的判断奇数。

你写

const isOdd = x => x % 2 === 1;

这是小学的知识,除以 2,如果除不尽(有余数)那么就是奇数。正因为知识点很简单,所以给人一种随便一个程序员都会判断的错觉。

现在我们假设用户传入的参数一定是数字。

便如此,这个函数依然不能正确判断奇数。因为 -3 % 2 的结果是 -1

有人说那就这么写:

const isOdd = x => x % 2 !== 0;

便一个小数就被判断为奇数了。更不用说浮点数中的妖怪 NaNInfinity 了。

那么是不是对 NaNInfinity 直接返回 falst,然后把 -1 的判断也加上去就行了:

const isOdd = x => x % 2 === 1 || x % 2 === -1;

也是图样

9007199254740991 % 2 === 1
9007199254740992 % 2 === 0
9007199254740993 % 2 === 0
9007199254740994 % 2 === 0
9007199254740995 % 2 === 0
// 后面的都是 0

为什么从 9007199254740991 开始呢?因为这个值是 number.MAX_SAFE_IntegeR,是 2 ** 53 - 1

那回过头来看看 is-odd 库是怎么实现的呢?

!!(~~i & 1)

~~i 用于把字符串转换为整数,和 1 进行按位与运算判断最后一位是 1 还是 0

很遗憾,也有问题。

本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。

大佬总结

以上是大佬教程为你收集整理的驳《我不是很懂 Node.js 社区的 DRY 文化》全部内容,希望文章能够帮你解决驳《我不是很懂 Node.js 社区的 DRY 文化》所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。