gpt4 book ai didi

javascript - 奇怪的 array.length 替代语法

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:09:17 24 4
gpt4 key购买 nike

这让我感到惊讶:

var parts = email.split('@');
if (parts < 2) {

引用:https://github.com/Kicksend/mailcheck/blob/master/src/jquery.mailcheck.js#L21-22

基本上,它看起来像:

var a = [null, null, null]
a < 2 // false

var b = [null]
b < 2 // true

所以它似乎有效,但我想知道为什么,它这样做实际上发生了什么强制?因为这里的目的是如果来自电子邮件字符串的部分少于 2 个,我希望它总是通过,因为定义的数组是真实的——它应该创建一个至少有 1 个成员的数组,即使是在一个空字符串上.

我总是更喜欢使用array.length。以上安全吗?

最佳答案

这是一个字符串,然后是正在发生的数字转换,因为数组不能直接与 < 进行比较运算符(operator)。首先它会进行字符串比较,但随后会进行数字比较。

注意:

  • [null, null, null] == ",,"
  • [null] == ""

和:

  • +",,"NaN
  • +"" === 0

现在它有意义了,因为 0 < 2 === true但是NaN < 2 === false .

因此,这确实不是一个有意义的表达。 [null, null] < 3false因为"," < 3本质上是在做 NaN < 3 .

关于javascript - 奇怪的 array.length 替代语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9813459/

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