无法理解JavaScript指令

无法理解JavaScript指令,javascript,Javascript,我对这个工具感兴趣。 请看一看 我不明白这个说明: var W = window.Wasabi = window.Wasabi || {}; 我的最终目的是调整由JavaScript动态加载的CSS属性 谢谢您的帮助。如果window.Wasabi不存在,那么window.Wasabi将等于{}。如果它已经存在,那么不要改变它。最后,将W指定给window.Wasabi。所以,它就像这样的代码: var W; if (!window.Wasabi) { window.Wasabi =

我对这个工具感兴趣。 请看一看

我不明白这个说明:

var W = window.Wasabi = window.Wasabi || {};
我的最终目的是调整由JavaScript动态加载的CSS属性


谢谢您的帮助。

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

var W;

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

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

var W;

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

这里发生了两件事

  • 逻辑或运算符:
a | | b
如果
a
是真的或
b
不是真的,将返回
a

所以
window.Wasabi | |{}
mean return
window.Wasabi
如果它被定义,或者返回一个新的空对象

  • 双重指派:
c=d=1
设置
d
等于
1
c
等于
d
。i、 e.将
c
d
设置为
1

  • 把这两件事放在一起:

如果已经设置了
window.Wasabi
,那么只需获取对它的引用并将其存储在
W
中即可。否则,创建一个新对象,在
窗口中存储一个引用。Wasabi
(下次使用)并将其称为
W
,以便立即使用。

这里发生了两件事

  • 逻辑或运算符:
a | | b
如果
a
是真的或
b
不是真的,将返回
a

所以
window.Wasabi | |{}
mean return
window.Wasabi
如果它被定义,或者返回一个新的空对象

  • 双重指派:
c=d=1
设置
d
等于
1
c
等于
d
。i、 e.将
c
d
设置为
1

  • 把这两件事放在一起:

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

此语句中有两个不太明显的内容。有两个连续的等号,最后是
|
。他们没有亲戚关系,所以我会逐一处理

var W=window.Wasabi=window.Wasabi;
//Shorthand for
var window.Wasabi=window.Wasabi;
var W=window.Wasabi;
在英语中,这是:W等于窗。芥末等于窗。芥末

现在,
|
是一个
运算,它表示如果是真实值,则取最左边的值,或者取右边的值

var window.Wasabi=window.Wasabi||{};
//equates to 
var window.Wasabi;
if(window.Wasabi){
    window.Wasabi=window.Wasabi;
}else{
    window.Wasabi={};
}

此模式对于为变量指定默认值非常有用。这将回答说芥末至少是一个物体…

在这句话中有两件不太明显的事情。有两个连续的等号,最后是
|
。他们没有亲戚关系,所以我会逐一处理

var W=window.Wasabi=window.Wasabi;
//Shorthand for
var window.Wasabi=window.Wasabi;
var W=window.Wasabi;
在英语中,这是:W等于窗。芥末等于窗。芥末

现在,
|
是一个
运算,它表示如果是真实值,则取最左边的值,或者取右边的值

var window.Wasabi=window.Wasabi||{};
//equates to 
var window.Wasabi;
if(window.Wasabi){
    window.Wasabi=window.Wasabi;
}else{
    window.Wasabi={};
}

此模式对于为变量指定默认值非常有用。这将回答Wasabi至少是一个对象…

在这句话中有两个主要的javascript概念需要理解

第一个是: 这相当于:

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

第二个是:
b
将被分配值“某物”,而
a
将被分配值
b
(刚刚被设置为“某物”)

a和b都将被赋予“某物”的值

应用于您的示例: 如果window.Wasabi没有定义(或是falsy),那么它将被分配到
{}
。 然后W变量将被赋值为window.Wasabi

Is
window.Wasabi
被定义,然后它将被分配到自身的值(不会发生任何事情),而W将被分配到window.Wasabi的值


如果一个对象不存在,那么设置它的初始值是一种非常肮脏的方式,但是。。。它是有效的。

在这个语句中有两个主要的javascript概念需要理解

第一个是: 这相当于:

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

第二个是:
b
将被分配值“某物”,而
a
将被分配值
b
(刚刚被设置为“某物”)

a和b都将被赋予“某物”的值

应用于您的示例: 如果window.Wasabi没有定义(或是falsy),那么它将被分配到
{}
。 然后W变量将被赋值为window.Wasabi

Is
window.Wasabi
被定义,然后它将被分配到自身的值(不会发生任何事情),而W将被分配到window.Wasabi的值


如果一个对象不存在,那么设置它的初始值是一种非常肮脏的方式,但是。。。它很有效。

感谢所有人提供了这些好的、及时的答案!感谢所有这些好的和及时的回答!