今天看到一些以前从未见过的JS符号,如果这是大家都知道的常见问题,请多多包涵。
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
})();
关于Javascript定义变量符号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4185697/