我想在使用变量之前检查它是否已定义,所以我写了这样的内容
if(!variable){
return null;
}
但它抛出一个错误
ReferenceError: variable is not defined
如果我这样做
if(typeof variable === 'undefined'){
return null;
}
它按预期工作。
这些方法之间有什么区别以及为什么它在第一个示例中没有返回 null 而是因错误而终止?
最佳答案
当 !variable
被求值时,它会尝试获取变量的值,如 per spec会抛出一个ReferenceError。
但是打电话typeof最初不会尝试获取变量的值,而是检查传递的表达式是否是引用,如果是,那么它将检查它是否可解析(如果没有返回undefined
)。
关于Javascript - 如果变量未定义的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31673936/