今天看到一些我以前从未见过的JS符号,如果它是每个人都知道的常见内容,请耐心等待。
var cookiepath = cookiepath || '';
现在,这只是说,如果名为cookiepath的变量已经存在,将其设置为cookiepath,或者如果不存在,则将其设置为''?
答案 0 :(得分:2)
你是对的。
||
运算符求值为“truthy”的第一个操作数
如果第一个操作数是“真实的”,则根本不评估第二个操作数
(如果两个操作数都不真实,则评估为第二个操作数)
Truthy表示除undefined
,null
,false
,0
,NaN
或""
之外的所有内容。
答案 1 :(得分:2)
正在声明cookiepath
变量,已初始化。
如果已在当前词法范围内声明了标识符,则var
语句不会造成任何伤害。
如果尚未声明cookiepath
,则var
语句在运行时之前会将变量初始化为undefined
。
之后,在运行时,如果它的值是 falsy (null
除外,undefined
,则为空字符串,{{1 }},0
或NaN
)它被设置为空字符串。
请注意,您可以访问本地范围中的false
变量。
考虑以下示例:
cookiepath
在上面的例子中,我们在全局范围内有一个全局var cookiepath = 'outer';
(function () {
var cookiepath = cookiepath || "";
alert(cookiepath); // alerts an empty string, not "outer"
})();
变量,但是当执行该函数时,将在函数的范围内声明一个本地cookiepath
变量,并且这会影响外部作用域的值,即使在函数中的cookiepath
语句之前,这种行为也是显而易见的,例如:
var
答案 2 :(得分:0)
正如@SLaks所说,它的计算结果为true,因此这段代码会导致执行错误:
var cookiepath = false;
var cookiepath = cookiepath || "";
# cookiepath === ""
答案 3 :(得分:0)
这是一种提供默认值的方法。
此处,只有当Cookie值为null
,false
,undefined
,0
,空字符串或{{1}时,才会获得值'' }。否则,它将保持不变。