标签: javascript referenceerror
我想在使用之前检查一个变量是否已定义,所以我写了类似这样的东西
if(!variable){ return null; }
但它会抛出错误
ReferenceError:未定义变量
如果我这样做
if(typeof variable === 'undefined'){ return null; }
它按预期工作。
这些方法之间有什么区别,为什么它在第一个例子中没有返回null,而是因为错误而死了?
答案 0 :(得分:2)
当评估!variable时,它会尝试获取变量的值,而per spec将抛出一个ReferenceError。
!variable
但调用typeof最初不会尝试获取变量的值,而是会检查传递的表达式是否为引用,如果是,那么它将检查它是否可解析,如果也不{{1}返回。