Javascript定义变量表示法问题

时间:2010-11-15 15:10:35

标签: javascript

今天看到一些我以前从未见过的JS符号,如果它是每个人都知道的常见内容,请耐心等待。

var cookiepath = cookiepath || '';

现在,这只是说,如果名为cookiepath的变量已经存在,将其设置为cookiepath,或者如果不存在,则将其设置为''?

4 个答案:

答案 0 :(得分:2)

你是对的。

||运算符求值为“truthy”的第一个操作数 如果第一个操作数是“真实的”,则根本不评估第二个操作数 (如果两个操作数都不真实,则评估为第二个操作数)

Truthy表示除undefinednullfalse0NaN""之外的所有内容。

答案 1 :(得分:2)

正在声明cookiepath变量,已初始化。

如果已在当前词法范围内声明了标识符,则var语句不会造成任何伤害。

如果尚未声明cookiepath,则var语句在运行时之前会将变量初始化为undefined

之后,在运行时,如果它的值是 falsy null除外,undefined,则为空字符串,{{1 }},0NaN)它被设置为空字符串。

请注意,您可以访问本地范围中的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值为nullfalseundefined0,空字符串或{{1}时,才会获得值'' }。否则,它将保持不变。