为什么我不能在IF语句Javascript中有条件变量?

时间:2015-06-16 15:01:56

标签: javascript if-statement

if (0==0){console.log(true)}

预期:true 结果:true

if (0==1){console.log(true)}

预期:未定义结果:未定义

var c = "0==1";
if (c){console.log(true)}

预期:未定义结果:true

如何在第三个语句中获得“未定义”结果?就像第二个声明一样。

5 个答案:

答案 0 :(得分:1)

“0 == 1”是有效字符串

你应该使用

var c = 0==1;

答案 1 :(得分:1)

您的字符串"0==1"非空或null,因此它将通过if test

您可以使用评估字符串的eval函数。

var c = "0==1";
if (eval(c)){console.log(true)}

或者你可以说c = 0==1;,但最好写c = false;,不是吗?

答案 2 :(得分:0)

  

如何在第三个语句中获得“未定义”结果?就像第二个陈述一样。

我不特别推荐这个,但是 - 您可以使用eval,它在其字符串参数中解析和评估JavaScript代码:

var c = "0==1";
if (eval(c)){console.log(true)}

有关详细信息,请参阅the 'eval()' page on MDN

答案 3 :(得分:0)

在javascript中有预定义的FALSY值,其他一切都是TRUTHY值。所以" 0 == 1"变为TRUTHY值。

FALSY 值:

  • 假。
  • 0(零)
  • "" (空字符串)
  • 空。
  • 未定义。
  • NaN(一个特殊的数字值,意思是非数字!)

答案 4 :(得分:0)

var c = "0==1";
if (c){console.log(true)}

c现在的值为“0 == 1”,这是一个字符串。如果您想获得未定义的值,请执行以下操作:

//c now has a variable reverence but an undefined (null) value
var c = undefined; 
if (c){console.log(true)}

未定义基本上意味着该对象不存在。在您的情况下,值c确实存在,因为您创建了一个包含文本的字符串:“0 == 1”。

我希望这是有道理的。