据我了解,检查未定义变量的首选方法是typeof a === 'undefined'
.
但为什么会更好typeof a == 'undefined'
呢?哪些地方会失败?
据我了解,检查未定义变量的首选方法是typeof a === 'undefined'
.
但为什么会更好typeof a == 'undefined'
呢?哪些地方会失败?
在这种情况下,sincetypeof
总是会给你一个字符串:它没有更好(也没有更糟)。它没有实际的区别。
一般来说, using是首选,===
因为它会强制您明确说明您的类型,并避免在 JavaScript 的类型解析规则不直观时获得您不期望的结果。
==
和之间的区别在于===
执行==
转换。因此,例如 1 将是==
to'1'
但不是===
to '1'
。当您检查时首选该方法的原因undefined
是因为在 JavaScript 中存在已知的比较陷阱。
最常见的:
'' == '0' //false
0 == '' //true
0 == '0' //true
false == 'false' //false
false == '0' //true
false == undefined //false
false == null //false
null == undefined //true
" \t\r\n" == 0 //true
因此,===
您可以避免null == undefined
问题,这可能会导致难以发现的错误。这就是为什么你应该使用==
而不是===
. 因为===
没有在后台执行任何转换,所以它也是一个更快的操作。
在这种特定情况下,它不会产生影响。无论你使用typeof a == 'undefined'
还是typeof a === 'undefined'
输出都是一样的,没有错误。那是因为typeof
返回一个字符串。但是,操作会更快,因此您的性能提升可以忽略不计。
因为typeof
只会返回字符串,所以用 . 比较两个字符串是安全的==
。
==
和之间有很大的区别===
(在这里查看)
但是,由于 typeof总是返回字符串,所以可以使用它。