无法理解JavaScript指令

时间:2017-10-23 12:11:08

标签: javascript

我对Wasabi工具感兴趣。 请查看this piece of code

我不理解这条指令:

var W = window.Wasabi = window.Wasabi || {};

我的最终目的是调整一个CSS属性,由JavaScript动态加载......

感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

这里发生了两件事。

  • 逻辑OR运算符:
如果a||b是真实的,则{p> a将返回a,否则将返回b

所以window.Wasabi||{}表示返回window.Wasabi(如果已定义)或以其他方式返回新的空对象。

  • 双重任务:

c=d=1设置d等于1c等于d。即将cd设为1

  • 将这两件事放在一起:

如果已设置window.Wasabi,则只需获取对它的引用并将其存储在W中。否则,请创建一个新对象,在window.Wasabi中存储引用(以便下次使用)并将其命名为W以供使用。

答案 1 :(得分:2)

如果window.Wasabi不存在,那么window.Wasabi将等于{}。如果它已经存在,那么就不要改变它。最后,将W分配给window.Wasabi。所以,它就像这段代码:

var W;

if (!window.Wasabi) {
    window.Wasabi = {};
}
W = window.Wasabi;

答案 2 :(得分:0)

本声明中有两个不那么明显的事情。有两个连续的等号,最后是normed=True。他们没有关联,所以我会逐个解决它们。

||

在英语中,那就是:W等于window.Wasabi等于window.Wasabi。

现在,var W=window.Wasabi=window.Wasabi; //Shorthand for var window.Wasabi=window.Wasabi; var W=window.Wasabi; 在操作中是||,它表示取最左边的值,如果它是真值,或者是右边的值。

OR

此模式对于为变量提供默认值非常有用。这将回答芥末至少是一个对象...

答案 3 :(得分:0)

本声明中有两个主要的javascript概念。

第一个是:

'gallery.*.text' =>  'text of gallery 1',
'gallery.*.title' =>  'title of gallery 1',

这相当于:

var x = y || {}

如果if (y) x = y else { x = {} 是真的,则其值将分配给y。否则,x将等于x(空对象)

第二个是:

{}

a = b = "something" 将被分配值"某些内容"并为b分配a的值(仅设置为"某些内容")

a和b都将被分配值""。

对您的示例的应用程序:

b

如果window.Wasabi 定义(或为假),则会将其分配给var W=window.Wasabi=window.Wasabi||{}; 。 然后将为W变量赋值window.Wasabi。

{} 定义的,然后它将被赋值给它自己的值(什么都不会发生),并且W将被赋值window.Wasabi。

如果某个对象的初始值不存在,那么它是一种非常脏的方法,但是......它可以工作。