Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript定义变量表示法问题_Javascript - Fatal编程技术网

Javascript定义变量表示法问题

Javascript定义变量表示法问题,javascript,Javascript,今天看到了一些我以前从未见过的JS符号,如果这是大家都知道的常见现象,请耐心听我说 var cookiepath = cookiepath || ''; 现在,这只是说,如果名为cookiepath的变量已经存在,请将其设置为cookiepath,如果不存在,请将其设置为“”?您是正确的 |运算符计算的第一个操作数为“truthy”。 如果第一个操作数为“truthy”,则根本不计算第二个操作数。 (如果两个操作数都不是真的,则计算结果为第二个操作数) Truthy的意思是除未定义,空,假,0

今天看到了一些我以前从未见过的JS符号,如果这是大家都知道的常见现象,请耐心听我说

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
})();
可能的重复可能的重复