我认为下面会的工作,x
是否申报或赋值或不:如果(x)的...给出了参考错误:X没有定义
if (x)
console.log("x is well defined");
else
console.log("x is not defined or null or false or 0 ...");
但是,我得到(当x
无法在我的代码中声明):
x is not defined
为什么会发生这种情况?
(这是在Node.js的环境。)
我认为下面会的工作,x
是否申报或赋值或不:如果(x)的...给出了参考错误:X没有定义
if (x)
console.log("x is well defined");
else
console.log("x is not defined or null or false or 0 ...");
但是,我得到(当x
无法在我的代码中声明):
x is not defined
为什么会发生这种情况?
(这是在Node.js的环境。)
,如果你不在,如果范围的任何地方x声明(x)语句,会有参考错误。
为了避免这种情况,只需声明var x;在if(x)语句或其父范围的范围内。
现在,如果您只是声明:
var x;
这里x的值是未定义的,所以其他部分将被执行。
但是,如果你定义为:
var x = 1;
然后if语句将真实输出是x被很好地定义
这里的jsfiddle:https://jsfiddle.net/raushankumar0717/4ozmf7r5/
var x=1;
if(x)
\t alert("Defined");
else
alert("Not Defined");
谢谢大家的回答。我和Jade(aka Pug)中的Javascript混淆了。在Jade中,总是可以测试一个未声明的变量。 Jade仍然是Javascript,但显然未声明的变量在进入Jade脚本时被赋予默认值。 –
按我的知识...... 如果我们看到x的值是“不确定”,因此它会给一个TypeError!
If u see this..
if(typeof x === 'undefined')
console.log("x is well defined");
这会给输出“x被明确定义” 纠正我,如果我有从你的问题别的东西! :)
当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”是truthy,你可以使用:
if (typeof x !== 'undefined' && x)
console.log("x is well defined");
else
console.log("x is not defined or null or false or 0 ...");
如果x没有声明这将这样做(这是一个预期的行为),另一方面'typeof x!=“undefined”不会抛出任何错误,即使x没有被声明。 – Vivick
即使使用'typeof',你也可以得到参考错误,如果你真的依靠静态分析,它会更好。 – MinusFour
你想知道什么?你似乎已经知道了解决方案:当你想使用它时,在代码中声明'x'。 – Bergi