请解释一下: var MYLIBRARY = MYLIBRARY || (函数() [重复]

Posted

技术标签:

【中文标题】请解释一下: var MYLIBRARY = MYLIBRARY || (函数() [重复]【英文标题】:Explain this please: var MYLIBRARY = MYLIBRARY || (function() [duplicate]请解释一下: var MYLIBRARY = MYLIBRARY || (函数() [重复] 【发布时间】:2014-11-07 20:27:07 【问题描述】:

我偶然发现了一个我不确定它是做什么的构造

var MYLIBRARY = MYLIBRARY || (function()

https://***.com/a/2190927/680815

我没有太多的代表。但是,所以我不能发表评论来询问这么好,抱歉造成混乱。 :)

这是否意味着如果定义了 MYLIBRARY 则使用它,如果不分配封装代码?

谢谢,

【问题讨论】:

这定义了 MYLIBRARY 如果它还没有设置。它没有分配对函数的引用;它正在调用函数并分配其返回值。 (我会注意到“已设置”不是正确的术语,但希望您明白这一点。这种模式通常用于在多个文件的名称空间中放置许多类似类的东西。 【参考方案1】:

是的,它与您的想法差不多。

如果定义了MYLIBRARY,则使用它,如果没有,则为其分配封装代码?

【讨论】:

【参考方案2】:

检查 MYLIBRARY 是否未定义、null 或 false 然后保持原样,否则它将是分配的函数。

换句话说:

if (!MYLIBRARY) 
    MYLIBRARY = function();

但在您的 sn-p 中,我认为 MYLIBRARY 始终未定义,因为您在检查或复制时设置了变量。

【讨论】:

您的代码示例不等效,因为您删除了var,这意味着如果之前没有声明它会抛出。不,MYLIBRARY 并不总是undefined,除非这段代码恰好在函数内部。似乎更有可能是全球性的。 如果 MYLIBRARY 是全局的,那么为什么要重新声明它呢?你认为这是对的吗?无论如何,我说:“我认为”这意味着它取决于之前的代码。 嗯,这就是重点。如果它是全球性的,但它可能会或可能不会被定义,那么您可以使用问题中的技术。对于本地人来说,它没有意义,除非它是一个可能收到也可能没有收到值的函数参数。

以上是关于请解释一下: var MYLIBRARY = MYLIBRARY || (函数() [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Setuptools 从 git 子模块安装代码

PHP: $var 和 &$var 有啥区别?

用下面的代码解释一下javascript中var和let关键字的区别

这是啥通信:my_var = my_var || 69 [重复]

有人可以解释这段代码如何返回 4

我不理解每个函数中第一行var tbody = document.getElementById('table').lastChild;谁帮我解释一下?