3

我有一个行为奇怪的空变量。出于某种原因,我似乎无法检测到它是否为空!var 被称为emailFromUrl.

   console.log(emailFromUrl); //returns null
   console.log(emailFormUrl.toString()); //returns null
   console.log(emailFromUrl === null); //false!
   console.log(emailFromUrl != null); //true!
   console.log(typeof emailFromUrl); //string
   console.log(!emailFromUrl); //false!
   console.log(emailFromUrl === ""); //false

这到底是怎么回事?

答案:

   console.log(emailFromUrl === 'null'); //true!

未经过滤的控制台日志:

Test71 | emailFromUrl : null | emailFromUrl === null : false | emailFromUrl != null : true | emailFromUrl.toString() : null | typeof emailFromUrl : string | !emailFromUrl : false | emailFromUrl === "" : false | emailFromUrl === "null" : true
4

3 回答 3

6

也许emailFromurlvalue 只是一个文字null字符串?) 我认为这将解释您在问题中得到的所有结果。

于 2012-06-08T16:02:15.970 回答
1

=== 运算符检查值和类型。emailFromUrl 是 string not null 类型,这就是为什么它在那里评估为 false 的原因。

于 2012-06-08T15:58:48.400 回答
0

除非您想要基于它为空的特定逻辑,否则您可以检查对象是否“虚假”(如果对象未定义,0 或空)

if(!emailFromUrl) {
    // handle the null scenario
}
于 2012-06-08T15:53:21.220 回答