今天看到了一些我从未见过的JS表示法,如果这是大家都知道的共同点,请耐心等待。Javascript定义变量表示法问题
var cookiepath = cookiepath || '';
现在,这只是说,如果一个名为cookiepath变量已经存在,将其设置为cookiepath或者如果它不,它设置为“”?
今天看到了一些我从未见过的JS表示法,如果这是大家都知道的共同点,请耐心等待。Javascript定义变量表示法问题
var cookiepath = cookiepath || '';
现在,这只是说,如果一个名为cookiepath变量已经存在,将其设置为cookiepath或者如果它不,它设置为“”?
cookiepath
变量正在被声明,初始化。
如果已经在当前词法范围中声明了标识符,则var
语句不会造成任何伤害。
如果cookiepath
尚未声明,var
语句在运行时会将变量初始化为undefined
。
之后,在运行时,在作出转让,如果它的值是falsy(除null
,undefined
,一个空字符串,0
,NaN
,或false
)将它设置为空字符串。
请记住,您可以访问本地范围中的cookiepath
变量。
请看下面的例子:
var cookiepath = 'outer';
(function() {
var cookiepath = cookiepath || "";
alert(cookiepath); // alerts an empty string, not "outer"
})();
在上面的例子,我们有一个全球性的cookiepath
变量,在全球范围内,但在执行功能时,本地cookiepath
变量将在范围内声明的功能,而这个阴影外范围的价值,而这种行为是明显的,甚至在功能上var
语句之前,例如:
var foo = 'foo';
(function() {
alert(foo); // undefined, not 'foo' from the outer scope
var foo; // undefined
})();
你是对的。
||
运算符评估为它的第一个“truthy”操作数。
如果第一个操作数是“truthy”,则第二个操作数根本不会被评估。
(如果没有操作数是truthy,它计算到第二个)
Truthy意味着什么,但undefined
,null
,false
,0
,NaN
,或""
。
为@SLaks说,它的计算结果为第一个真正所以这段代码将导致错误的执行:
var cookiepath = false;
var cookiepath = cookiepath || "";
# cookiepath === ""
这是一种方法来提供一个默认值。
这里,cookiepath将只得到分配值',如果它的价值是null
,false
,undefined
,0
,空字符串,或NaN
。否则,它将保持不变。
可能重复的[使用Javascript ||操作者(http://stackoverflow.com/questions/1378619/javascript-operator) – Guffa 2010-11-15 15:14:23