请解释一下: 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 || (函数() [重复]的主要内容,如果未能解决你的问题,请参考以下文章
用下面的代码解释一下javascript中var和let关键字的区别
这是啥通信:my_var = my_var || 69 [重复]
我不理解每个函数中第一行var tbody = document.getElementById('table').lastChild;谁帮我解释一下?