您对的意图的猜测|| {}
非常接近。
当在文件顶部看到该特定模式时,该模式用于创建 名称空间 (即命名对象),在该 命名空间 下可以创建函数和变量,而不会过度污染全局对象。
究其原因 ,为什么 它的使用是如此,如果你有两个(或更多)的文件:
var MY_NAMESPACE = MY_NAMESPACE || {};
MY_NAMESPACE.func1 = {
}
和
var MY_NAMESPACE = MY_NAMESPACE || {};
MY_NAMESPACE.func2 = {
}
这两个份额的同一个命名空间那么也没关系,其中责令这两个文件被加载,你仍然可以func1
和func2
正确的中定义MY_NAMESPACE
正确的对象。
加载的第一个文件将 创建 初始MY_NAMESPACE
对象,任何后续加载的文件将 扩展 该对象。
有用的是,这还允许 异步 加载共享相同名称空间的脚本,从而可以缩短页面加载时间。如果<script>
标记defer
设置了属性,则您将不知道它们将按什么顺序解释,因此如上所述,这也解决了该问题。