我看到许多代码就像那样开始了
var a=a||{};
现在我知道检查是否存在。
我的问题是为什么要在第一个代码中检查它?
我的意思是程序员知道a不存在。
答案 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中的变量范围有一个非常好的答案,它应该澄清你的怀疑。