Javascript 1线性问题

Javascript 1线性问题,javascript,Javascript,可能重复: 下面这行Javascript代码的作用是什么 var somevar = window.somevar || {}; 它将somevar设置为window.somevar如果window.somevar存在并且不是布尔值false,否则它将其设置为空对象{} 这是处理可能未设置的变量的常用习惯用法。这是一个非此即彼的赋值。如果window.somevar为false或未定义,则somevar设置为等于{}。否则将其设置为等于window.somevar这将把表达式window.s

可能重复:

下面这行Javascript代码的作用是什么

var somevar = window.somevar || {};

它将
somevar
设置为
window.somevar
如果
window.somevar
存在并且不是布尔值
false
,否则它将其设置为空对象
{}


这是处理可能未设置的变量的常用习惯用法。

这是一个非此即彼的赋值。如果
window.somevar
false
未定义
,则
somevar
设置为等于
{}
。否则将其设置为等于
window.somevar
这将把表达式
window.somevar
作为布尔表达式进行计算。如果计算结果为
true
,则返回
window.somevar的值。如果它的计算结果为
false
,那么它将返回空对象
{}

,类似于一个联合体,它看起来MSI将在这个问题上使用所有ASCII艺术,但英语似乎是一个更好的解决方案。因此,通过将其设置为空对象,这是否反过来成为可用的窗口。somevar?@VinnyD yes,如果上下文('this'))是窗口,这对于在页面中运行的简单脚本是正确的。它将返回window.somevar的值还是引用?@Ketan实际上我不确定。要找出…@Ketan实验表明它已设置为该值。虽然我不能100%确定这一点,但这取决于
window.somevar
是什么。如果它是一个对象,那么
somevar
将指向
window.somevar
指向的同一个对象。因此,如果您随后修改
window.somevar
的属性,它将修改
somevar
@Ketan的相应属性,这是因为在您的场景中,您创建并修改了一个对象。对于简单值,它使用值()。