JavaScript未定义检查

Bai*_*kev 7 javascript internet-explorer undefined

我经常看到JavaScript代码,其中一个函数可以包含在"options"对象中并使用它,如:

var name = typeof options.name !== 'undefined' ? options.name : "Bob";
Run Code Online (Sandbox Code Playgroud)

这似乎等同于以下内容:

var name = options.name || "Bob"; 
Run Code Online (Sandbox Code Playgroud)

现在,我明白在某些情况下你可能真正关心的options.nameundefinedvs null,这对我来说是有意义的,但我经常在不需要这种区别的情况下看到这一点.

我相信我听说人们因为IE中的一些错误而编写这样的代码.有人可以详细说明吗?

Dan*_*llo 6

我不知道IE中的错误,但这些语句并不完全等效:

  • 第一个只在is 时将name变量设置为默认值."Bob"options.nameundefined

  • 第二个将name变量设置为何"Bob"options.name为假.这可以是空字符串,null值,值0,NaN值,布尔值falseundefined.

例如,如果options.name === 0,第一个语句将name变量设置为0,而第二个语句将其设置为"Bob".