我们经常在JavaScript代码中使用以下代码模式
if (typeof(some_variable) != 'undefined' && some_variable != null)
{
// Do something with some_variable
}
Run Code Online (Sandbox Code Playgroud)
是否有一种不那么冗长的检查方式具有相同的效果?
根据一些论坛和文献说,以下应该具有相同的效果.
if (some_variable)
{
// Do something with some_variable
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当未定义时,Firebug将这样的语句评估为运行时错误some_variable,而第一个语句就好了.这只是Firebug的一个(不需要的)行为,还是这两种方式之间确实存在一些差异?
我有一个场景,其中函数只获得一个参数,可以是object或 null.因为object和null都有类型object.我怎样才能使用if语句来区分它们?如果我使用typeof那么对象和null都将返回对象.
UPDATE
function func (par) {
if (par === null) {
console.log(null);
}
if (typeof par === "object") {
console.log(object);
}
}
func({key1: 'val1', key2: 'val2'});
func(null);
Run Code Online (Sandbox Code Playgroud)