我一直在使用以下代码,但它在 javascript 中是什么意思?



我一直在我的项目中使用这些行,但我不知道它到底是什么意思,谁能告诉我它到底是什么意思。

var myObject = window.myObject || {};
(function () { 
//....my logic will go here
}).call(myObject);
var myObject = window.myObject || {};

这宣告了全球范围的myObject。如果它在获取现有值之前就已存在,或者如果不存在,则将其分配给新的空对象(继续阅读(。如果多个脚本分配同一对象的属性,这是一种常见的技术,因此首先执行哪个脚本并不重要,它们最终将始终得到相同的结果。

(function() { }).call(myObject)

这是一个IIFE上下文得到myObject,它允许您轻松地写入对象

this.someProp = someValue;

IIFE 还确保您在函数中声明的变量,例如:

var someValue = 1;

不是全局范围的一部分,因此它们不会污染全局命名空间。

var myObject = window.myObject || {}; // 1
(function () {                        //2
//....my logic will go here
}).call(myObject);                    //3
  1. window(DOM 窗口(对象的现有myObject属性创建一个名为myObject的变量,或者,如果不存在,则创建新的空对象 ({}(。
  2. 声明立即调用的函数表达式 (IIFE(。
  3. 通过提供先前创建的对象(或从window检索(如果在那里可用(myObject调用 IIFE。

请注意,在 IIFE 中,您可以根据需要访问myObject。在下面的代码片段中,请参阅打印的对象是如何使用键customvalue关联的值创建的。

var myObject = window.myObject || {
custom: 'value'
};
(function() {
console.log(myObject);
}).call(myObject);

最新更新