查看Google的书签泡泡库代码,我发现了这个:
var google = google || {};
google.bookmarkbubble = google.bookmarkbubble || {};
有人可以解释他们在这里做的是什么以及他们为什么要这样做?由于JS是一种解释性语言,为什么你需要将相同的google对象分配到google变量?这个脚本不会包含在每次加载页面时只执行一次吗?
答案 0 :(得分:2)
他们正在设置类似命名空间的对象。如果已有google
个对象或google.bookmarkbubble
对象,则表示他们确保不替换它。例如,如果您添加了另一个Google库,则可能已经设置了一个google
对象,如下所示:
{
somelibrary: {
...
}
}
所以,如果他们只是:
var google = { bookmarkbubble: { ... } }
这会破坏引用google.somelibrary
的任何代码。同样,如果他们没有var google = google || {};
并且您没有定义google
,那么google.bookmarkbubble
会抛出错误。
简而言之,此代码可确保存在google.bookmarkbubble
对象,而不会覆盖任何先前定义的google
或google.bookmarkbubble
个对象。
答案 1 :(得分:1)
var google = google || {};
是
if (!google) {
google = {};
}
这可确保第二个赋值不会失败,因为google
至少是一个空哈希值。
答案 2 :(得分:0)
当一个库包含许多可能包含或不包含在用户中的文件时,通常会这样做。第一个库将google
初始化为空对象(因为它的计算结果为空),后续库将保留已添加到对象的属性。