当前位置: 首页 > 面试题库 >

“ var FOO = FOO ||是什么?{}”(将变量或空对象分配给该变量)在Javascript中是什么意思?

蒙胤
2023-03-14
问题内容

在查看在线源代码时,我在几个源文件的顶部遇到了这个问题。

var FOO = FOO || {};
FOO.Bar = …;

但是我不知道该怎么办|| {}

我知道{}等于new Object(),我认为表示||类似“如果它已经存在,请使用其值,否则请使用新对象。

为什么我会在源文件的顶部看到它?


问题答案:

您对的意图的猜测|| {}非常接近。

当在文件顶部看到该特定模式时,该模式用于创建 名称空间 (即命名对象),在该 命名空间 下可以创建函数和变量,而不会过度污染全局对象。

究其原因 ,为什么 它的使用是如此,如果你有两个(或更多)的文件:

var MY_NAMESPACE = MY_NAMESPACE || {};
MY_NAMESPACE.func1 = {
}

var MY_NAMESPACE = MY_NAMESPACE || {};
MY_NAMESPACE.func2 = {
}

这两个份额的同一个命名空间那么也没关系,其中责令这两个文件被加载,你仍然可以func1func2正确的中定义MY_NAMESPACE正确的对象。

加载的第一个文件将 创建 初始MY_NAMESPACE对象,任何后续加载的文件将 扩展 该对象。

有用的是,这还允许 异步
加载共享相同名称空间的脚本,从而可以缩短页面加载时间。如果<script>标记defer设置了属性,则您将不知道它们将按什么顺序解释,因此如上所述,这也解决了该问题。



 类似资料:
  • 问题内容: 我一直在使用IIFE中和,并一直在使用的结构如下: 方法1: 但是,我经常看到以下情况,其中将变量分配给 方法2: 注意: 此问题 不是 关于此模式是什么或IIFE是什么。这与为什么要 在IIFE上 使用返回变量及其与Angular实践的关系有关。 在Angular方法1中工作正常,但是在我看到的许多原始JS示例中,都使用了方法2。我的假设是,封装在其中的任何内容都可以通过它进行调用。

  • 问题内容: 什么是Java中的对象引用变量? 参考变量是否保存对象的内存地址? 我很困惑。请说明一下。 问题答案: 我不确定我是否有能力正确回答这个问题,但是… 对象是类的实例,它存储在内存中的某些位置 引用是用来描述指向对象所在的内存位置的指针的。 变量是一种可以访问应用程序中该内存位置的方法(其值为“变量”)。尽管变量只能指向单个内存地址(如果不为空),则在应用程序的整个生命周期中,它可能会更

  • 问题内容: 我将SAS脚本转换为Python,其中SAS脚本与Oracle数据库连接,而Python将与PostgreSQL数据库连接。在SAS代码中,我发现以下语句: “ where account =”是什么?在Oracle中是什么意思?还是不是Oracle SQL,而是SAS?还是在所有形式的SQL中都可用? 此外,如果它是特定于SAS和/或Oracle的,我将在PostgreSQL中使用什

  • 问题内容: 我一直在PHP中看到该变量,但我不知道它的用途。我从来没有亲自使用过它。 有人可以告诉我该变量在PHP中如何工作吗? 问题答案: 它是对当前对象的引用,在面向对象的代码中最常用。 例: 这会将’Jack’字符串存储为所创建对象的属性。

  • 问题内容: javascript中变量的范围是什么?它们在函数内部和外部的作用域是否相同?还是有关系吗?另外,如果变量是全局定义的,则将变量存储在哪里? 问题答案: TLDR JavaScript具有词汇(也称为静态)作用域和闭包。这意味着您可以通过查看源代码来确定标识符的范围。 四个范围是: 全球-一切可见 功能-在功能(及其子功能和块)中可见 块-在块(及其子块)中可见 模块-在模块内可见 在

  • 问题内容: 6年前关闭。 有关匿名类的文档说明 匿名类无法在其封闭范围内访问未声明为final或有效地为final的局部变量。 我不明白变数为“有效的最终”是什么意思。有人可以提供一个示例来帮助我理解这意味着什么吗? 问题答案: 有效地最终意味着它在获得初始值之后永远不会改变。 一个简单的例子: 在这里,并没有声明为final,但是由于它从未更改,因此实际上被认为是 final 。 从Java 8