jQuery Core Style Guidelines提出了两种不同的方法来检查变量是否被定义。
typeof variable === "undefined"
variable === undefined
object.prop === undefined
为什么 jQuery 对全局变量使用一种方法,而对局部变量和属性使用另一种方法?
对于未声明的变量,typeof foo将返回字符串字面量"undefined",而身份检查foo === undefined将触发错误 “foo is not defined” 。
typeof foo
"undefined"
foo === undefined
对于局部变量(您 知道 在某处声明),不会发生此类错误,因此需要进行身份检查。