为了账号安全,请及时绑定邮箱和手机立即绑定

“var foo=foo颇具{}”(将一个变量或空对象赋值给该变量)意味着什么?

“var foo=foo颇具{}”(将一个变量或空对象赋值给该变量)意味着什么?

白衣染霜花 2019-06-21 15:38:57
在Javascript中,“var foo=foo颇具{}”(将一个变量或空对象赋值给该变量)意味着什么?在查看一个在线源代码时,我在几个源文件的顶部发现了这一点。var FOO = FOO || {};FOO.Bar = …;但我不知道是什么|| {}的确如此。我知道呀{}等于new Object()我觉得||用于“如果它已经存在,请使用它的值,否则使用新对象。为什么我会在源文件的顶部看到这个?
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

你对…的意图的猜测|| {}相当接近。

当在文件顶部看到此特定模式时,将用于创建命名空间,即一个命名对象,在该对象下可以创建函数和变量,而不会对全局对象造成不适当的污染。

原因为什么它的用途是,如果您有两个(或更多)文件:

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

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

它们都共享相同的命名空间-不管这两个文件的加载顺序如何-您仍然可以得到func1func2正确定义在MY_NAMESPACE对象正确。

加载的第一个文件将创造初值MY_NAMESPACE对象,则随后加载的任何文件都将增额物体。

有益的是,这也允许异步加载共享相同命名空间的脚本,这可以提高页面加载时间。如果<script>标记有defer属性集您无法知道它们的解释顺序,因此如前所述,这也解决了这个问题。


查看完整回答
反对 回复 2019-06-21
?
不负相思意

TA贡献1777条经验 获得超10个赞

var AEROTWIST = AEROTWIST || {};

基本上这一行的意思是设置AEROTWIST变量的值。AEROTWIST变量,或将其设置为空对象。

双管||是OR语句,只有当第一部分返回false时才执行OR的第二部分。

因此,如果AEROTWIST已经有了一个值,它将被保留为该值,但是如果它以前没有被设置过,那么它将被设置为一个空对象。

基本上和这样说是一样的:

if(!AEROTWIST) {var AEROTWIST={};}

希望能帮上忙。


查看完整回答
反对 回复 2019-06-21
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

另一种常用的方法是为未定义的函数参数设置默认值:

function display(a) {
  a = a || 'default'; // here we set the default value of a to be 'default'
  console.log(a);}// we call display without providing a parameterdisplay(); // this will log 'default'display('test'); 
  // this will log 'test' to the console

其他程序编制中的等价物通常是:

function display(a = 'default') {
  // ...}


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 307 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信