JavaScript 处理未声明变量(未定义变量)和未定义值的方式有所不同。在以下示例中,变量dan
已声明但从未设置,因此它的值是undefined
|| 返回true
它可以找到的第一个值,所以如果我传递除空字符串、0、false、NaN、未定义或 NULL 之外的任何内容,它将 console.log 传递的值。否则它将记录“默认值”。
function test(dan){
console.log(dan || "default value");
return dan===undefined;
}
console.log(test());//default value, then true
console.log(test(22));//22 then false
检查变量是否通过的更可靠的方法是查看变量的值是否未定义:
function test(dan){
dan = (typeof(dan)==='undefined')?"default value":dan;
}
在您的示例中,dan
根本没有声明变量(变量未定义),这就是您收到错误“dan is not defined”的原因,因为根本没有声明 dan。
function test(){
return dan===undefined;//ReferenceError: dan is not defined
}
console.log(test());
您可以将代码更改为:
var sha = 6, dan;//dan is declared here but no value is set
var secondParameter = dan || sha;
console.log(dan===undefined);//true
console.log(secondParameter);//6
如果你想检查某个对象是否有属性,那么它不会抛出错误:
function test(){
return window.neverSetOrDeclared===undefined;
}
console.log(test());//true
当您尝试检查 undefined 或 null 的属性时,它将引发错误:
null.something//throws error
undefined.something//throws error
window.neverSetOrDeclared===undefined//throws error