检查对象是否存在

时间:2012-11-19 08:51:53

标签: javascript oop object

我看到许多代码就像那样开始了

var a=a||{};

现在我知道检查是否存在。

我的问题是为什么要在第一个代码中检查它?

我的意思是程序员知道a不存在。

4 个答案:

答案 0 :(得分:2)

程序员应该知道变量是否存在。

它用于将不同的脚本部分混合在一起,而无需跟踪首先加载脚本的哪个部分。几个脚本在开始时将具有相同的代码段,因此它们共享相同的变量。

对于第一个脚本,声明了变量,并且没有先前的值,因此使用{}值。

对于使用它的以下脚本,var被忽略,因为已经声明了变量,并且使用了先前设置的变量值。

当然,在几个地方声明相同的变量会产生代码味道。您应该首先跟踪您正在做的事情,以便只声明一次。

答案 1 :(得分:1)

转换为更清晰的代码

var a; // The variable declaration gets brought up because of hoisting

有关提升here

的更多信息
if( a ) {
    a = a; // if a is a truthy value then assign it to itself
} else {
    a = {}; // if a is a falsy value then set the default to an empty object
}

希望有所帮助

答案 2 :(得分:0)

在这种情况下,这是回到默认值的快捷方式 - {}。

答案 3 :(得分:0)

基本上,javascript可以写在多个文件中,在每个文件中你可以定义多个声明和函数。

即使程序员知道某个给定的实例是否存在该变量,当从其他地方调用此代码时,无法知道它是否已经存在。

这不应该在编写良好的代码中发生(所有这些都来自一个开发人员/房子),但它确实发生在js代码从多个地方合并的项目中。

这个SO question对javascript中的变量范围有一个非常好的答案,它应该澄清你的怀疑。