在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
Run Code Online (Sandbox Code Playgroud)
但是,其他比较运算符没有等效的严格模式:
(s1 < i2) // true, type conversion
(s1 <= i2) // true, type conversion
([] < i2) // true, wait ... wat!?
Run Code Online (Sandbox Code Playgroud)
显而易见的解决方案看起来非常冗长:
((typeof s1 === typeof i2) && (s1 …Run Code Online (Sandbox Code Playgroud) 我正在使用JS,我不理解数组的某些行为.我搜索了但找不到正确的答案,如果这是欺骗或与其他问题相关,那就很抱歉.
我使用lodash有以下代码.
return _.difference(self.list1, self.list2) <= 0;
Run Code Online (Sandbox Code Playgroud)
那是返回一个数组,我直接将它与一个数字进行比较,因为我忘记了.length属性.我看到这是"工作",除非它不正确.所以我开始用JS控制台做一些测试,我不明白这里发生了什么.
[Object, Object, Object] <= 0 //returns false
[] <= 0 //returns true
[[]] <= 0 //returns true
[[[]]] <= 0 //returns true
[[2]] <= 0 // returns false
[[],[]] <= 0 //returns false
Run Code Online (Sandbox Code Playgroud)
JS在这做什么?非常感谢你.