我看到很多这样开始的代码
var a=a||{};
现在我知道它检查是否存在。
我的问题是,如果它在代码的第一个位置,为什么要检查它?
我的意思是程序员知道 a 不存在。
我看到很多这样开始的代码
var a=a||{};
现在我知道它检查是否存在。
我的问题是,如果它在代码的第一个位置,为什么要检查它?
我的意思是程序员知道 a 不存在。
程序员应该知道变量是否存在。
它用于将不同的脚本片段混合在一起,而不必跟踪脚本的哪个部分首先加载。多个脚本在开始时将具有相同的代码,因此它们共享相同的变量。
对于第一个脚本,声明了变量,并且它没有先前的值,因此{}
使用该值。
对于使用它的以下脚本,var
由于变量已声明,因此将被忽略,并使用先前设置的变量值。
当然,在多个地方声明同一个变量会产生代码异味。最好你应该跟踪你在做什么,这样你只声明一次。
翻译成更清晰的代码
var a; // The variable declaration gets brought up because of hoisting
更多关于吊装的信息在这里
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
}
希望有帮助
这是使用默认值的捷径 - 在这种情况下为 {}。
基本上,javascript 可以编写在多个文件中,并且在每个文件中,您可以定义多个声明和函数。
即使程序员知道给定实例的变量是否存在,当从其他地方调用此代码时,也无法知道它是否已经存在。
这不应该发生在编写良好的代码中(全部来自一个开发人员/房子),但它确实发生在 js 代码从多个地方合并的项目中。
这个SO question对 javascript 中的变量范围有一个非常好的答案,它应该可以澄清你的疑问。