【问题标题】:JavaScript: difference between typeof(var)==='undefined' vs =='undefined'?JavaScript:typeof(var)==='undefined' 与 =='undefined' 的区别?
【发布时间】:2015-09-14 18:49:31
【问题描述】:

也许是一个理论上的问题,但要检查变量是否存在,最常见的建议是:

typeof(var)==='undefined'typeof(var)!=='undefined'

这与typeof(var)=='undefined'(或typeof(var)!='undefined')有何不同?

我的意思是 =====。或!==!=。我知道这通常意味着比较 type 和 value,但在这种情况下,typeof(something) 总是计算为字符串,对吧?

是否存在typeof(var)==='undefined'typeof(var)=='undefined'相同的情况?

【问题讨论】:

  • 这个线程上的答案应该有助于澄清......stackoverflow.com/questions/359494/…
  • 你是对的。有些人喜欢总是使用=== 来保持一致(或者他们在某处读到== 是纯粹的邪恶,应该不惜一切代价避免)。
  • 快速说明:typeof 是运算符,而不是函数。你可以省略那些括号。
  • 是的,typeof 运算符总是返回一个字符串,如此处所述:w3schools.com/js/js_type_conversion.asp。我想不出两个场景不一样的场景,仅仅是因为 typeof 返回字符串

标签: javascript comparison undefined typeof


【解决方案1】:

确实没有区别,因此 typeof 返回一个字符串。

如果您想避免自动转换,请使用 ===!==

例子:

alert(1!='1')//false
alert(1!=='1')//true
alert('1'!='1')//false
alert('1'!=='1')//false
alert(true==1)//true
alert(true===1)//false

【讨论】:

    【解决方案2】:

    '===' 和 '!==' 运算符要快一些,所以在大多数情况下,应该使用它们来代替 '==' 或 '!='。

    【讨论】:

      【解决方案3】:

      对于!= 部分,! 将被视为 NOT。 typeof var !=='undefined' => if typeof var is not undefined

      【讨论】:

      • 谢谢,是的,我知道,我只是想知道typeof var !== 'undefined'typeof var != 'undefined' 之间的区别,但显然没有。
      • 个人喜好问题,仅此而已。但是在某些语言中,在 if 语句中使用 == 是正确的,因为它会检查,而只设置一个 = (总是在 if 中返回 strue)。很高兴将它们区分开来。
      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 2018-03-19
      相关资源
      最近更新 更多