Javascript定义变量表示法问题
今天看到了一些我以前从未见过的JS符号,如果这是大家都知道的常见现象,请耐心听我说Javascript定义变量表示法问题,javascript,Javascript,今天看到了一些我以前从未见过的JS符号,如果这是大家都知道的常见现象,请耐心听我说 var cookiepath = cookiepath || ''; 现在,这只是说,如果名为cookiepath的变量已经存在,请将其设置为cookiepath,如果不存在,请将其设置为“”?您是正确的 |运算符计算的第一个操作数为“truthy”。 如果第一个操作数为“truthy”,则根本不计算第二个操作数。 (如果两个操作数都不是真的,则计算结果为第二个操作数) Truthy的意思是除未定义,空,假,0
var cookiepath = cookiepath || '';
现在,这只是说,如果名为cookiepath的变量已经存在,请将其设置为cookiepath,如果不存在,请将其设置为“”?您是正确的
|
运算符计算的第一个操作数为“truthy”。如果第一个操作数为“truthy”,则根本不计算第二个操作数。
(如果两个操作数都不是真的,则计算结果为第二个操作数) Truthy的意思是除
未定义
,空
,假
,0
,NaN
,或”
,您是对的
|
运算符计算的第一个操作数为“truthy”。
如果第一个操作数为“truthy”,则根本不计算第二个操作数。
(如果两个操作数都不是真的,则计算结果为第二个操作数)
Truthy的意思是除未定义
,空
,假
,0
,NaN
,或”
,。正如@SLaks所说,它的计算结果为第一个true,因此此代码将导致错误执行:
var cookiepath = false;
var cookiepath = cookiepath || "";
# cookiepath === ""
正如@SLaks所说,它的计算结果为first true,因此此代码将导致错误执行:
var cookiepath = false;
var cookiepath = cookiepath || "";
# cookiepath === ""
这是一种提供默认值的方法
在这里,cookiepath仅当其值为null
、false
、未定义
、0
、空字符串或NaN
时,才会获得分配的值“”。否则,它将保持不变。这是一种提供默认值的方法
在这里,cookiepath仅当其值为null
、false
、未定义
、0
、空字符串或NaN
时,才会获得分配的值“”。否则,它将保持不变。正在声明cookiepath
变量,该变量已初始化
如果标识符已在当前词法范围内声明,var
语句不会造成任何损害
如果尚未声明cookiepath
,则var
语句将在运行时之前将变量初始化为undefined
之后,在运行时进行赋值,如果它的值为falsy(除了null
,未定义
,空字符串,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
})();
正在声明cookiepath
变量,该变量已初始化
如果标识符已在当前词法范围内声明,var
语句不会造成任何损害
如果尚未声明cookiepath
,则var
语句将在运行时之前将变量初始化为undefined
之后,在运行时进行赋值,如果它的值为falsy(除了null
,未定义
,空字符串,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
})();
可能的重复可能的重复