gpt4 book ai didi

javascript - 在 Javascript 中进行严格(非类型转换)<、>、<=、>= 比较的最佳和/或最短方法

转载 作者:行者123 更新时间:2023-12-03 00:28:11 26 4
gpt4 key购买 nike

在 Javascript 中,== 比较有一个严格(非类型转换)版本:===。同样,!= 具有严格的形式 !==。这些可以保护您免受以下疯狂的影响:

var s1 = "1",
i1 = 1,
i2 = 2;

(s1 == i1) // true, type conversion
(s1 != i1) // false, type conversion

(s1 === i1) // false, no type conversion
(s1 !== i1) // true, no type conversion

但是,其他比较运算符没有等效的严格模式:

(s1 < i2)   // true, type conversion
(s1 <= i2) // true, type conversion
([] < i2) // true, wait ... wat!?

显而易见的解决方案似乎相当冗长:

((typeof s1 === typeof i2) && (s1 < i2))  // false

在 Javascript 中是否有更惯用(或者更简洁)的方法来执行此操作?

引用:MDN Comparison Operators

最佳答案

没有适合您需要的内置运算符,但您始终可以创建自己的函数。例如,对于 < :

function lt(o1, o2) {
return ((typeof o1 === typeof o2) && (o1 < o2));
}
lt("10", 11); // false

如果您只处理字符串和数字,另一个选择是扩展 String.prototypeNumber.prototype :

function lt(o) {
return ((typeof this.valueOf() === typeof o) && (this < o));
}
String.prototype.lt = lt;
Number.prototype.lt = lt;
"10".lt(11); // false
(11).lt("12"); // false

关于javascript - 在 Javascript 中进行严格(非类型转换)<、>、<=、>= 比较的最佳和/或最短方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com