检查内部函数内部函数的返回错误结果



我不确定这里发生了什么。当我检查函数中的变量是否为null时,我会获取(变量不是null),这是不正确的,但是如果我删除功能零件并直接测试其返回(变量为null),则是正确的。发生了什么 ?为什么JavaScript如此混乱?

var variable = null;
function scoppedVariables(variable) {
  if( variable === null ) {
  console.log('variable is null');
} else {
  console.log('variable is not null');
}
}
scoppedVariables();

由于您接受variable作为参数,因此它接管了您在功能之外定义的variable。由于您不在函数调用上传递它,因此在函数中,它比undefined相比是null。(您可以使用非分数比较,但是在这种情况下,您不会弄清楚实际发生了什么;))

null == undefined // true
null === undefined // false

该方法是没有参数的,因此variable是未定义的,这不是严格的等于null

用参数调用该函数,或从签名中删除它:

function scoppedVariables(){..}

当以这种方式调用时,它将访问全局参数,但是将要变量传递给函数是更好的实践。

修改您的功能以使用此功能...

if (typeof variable == 'undefined') {
    console.log('variable is undefined');
} else {
    console.log('variable is defined');
    if (variable == null) {
        console.log('variable is null);
    } else {
        console.log('variable is not null');
    }
}

您没有传递函数调用中的任何内容,因此variable将不确定,而不是无效。您可能希望在参数输入方面更具防御性,如我在此处所示。

相关内容

  • 没有找到相关文章

最新更新