if(x)...给出参考错误:x未定义

时间:2017-07-29 01:25:43

标签: javascript

我认为以下内容可行,无论是x是声明还是赋值:

if (x)
   console.log("x is well defined");
else
   console.log("x is not defined or null or false or 0 ...");

但是,我得到了(当我的代码中没有声明x时):

  

未定义

为什么会这样?

(这是在Node.js环境中。)

3 个答案:

答案 0 :(得分:0)

据我所知...... 如果我们看到x的值是未定义的'所以它会给出一个TypeError!

If u see this..
if(typeof x === 'undefined')
    console.log("x is well defined");

这将给出" x定义良好的输出" 如果我从你的问题中得到了别的东西,请纠正我! :)

答案 1 :(得分:0)

运行if(x)时,x已检查且未定义,因此if / else表示无效,JavaScript遇到未捕获错误。

你可以把它放在一个try / catch中它会捕获错误,但是你的if / else不会记录任何东西。相反,你需要做类似的事情:

if (typeof x !== 'undefined')
   console.log("x is well defined");
else
   console.log("x is not defined or null or false or 0 ...");

或者,如果您还需要检查“x”是否真实,您可以使用:

if (typeof x !== 'undefined' && x)
   console.log("x is well defined");
else
   console.log("x is not defined or null or false or 0 ...");

答案 2 :(得分:0)

如果你没有在if(x)语句的范围内声明x,则会有引用错误。

为避免这种情况,只需声明var x;在if(x)语句或其父范围的范围内。

现在,如果您只是声明:

var x;

此处x的值未定义,因此其他部分将被执行。

但是如果你定义如下:

var x = 1;

然后if语句为true,输出将是x定义良好

这里是jsfiddle:https://jsfiddle.net/raushankumar0717/4ozmf7r5/



var x=1;

if(x)
	alert("Defined");
else
  alert("Not Defined");