Javascript定义变量符号问题

标签 javascript

今天看到一些以前从未见过的JS符号,如果这是大家都知道的常见问题,请多多包涵。

var cookiepath = cookiepath || '';

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

最佳答案

cookiepath变量正在被声明,一个被初始化。

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

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

之后,在运行时,如果它的值为falsy(nullundefined、空字符串、0NaN除外),就会进行赋值。 , 或 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/

相关文章:

Javascript:PI (π) 计算器

javascript - 为什么这个 DateParser 在 Safari 中不起作用?

javascript - 如何从文档中排除某些字段

javascript - 当在窗口中的任何位置单击选择框时,如何获得选择框关闭事件?

javascript - 未捕获的类型错误 : Cannot read property 'mData' of undefined

javascript - 如何嵌入实时跟踪网页livefromspace.com

javascript - 如何使一列始终突出显示

javascript - 如何从 C# 生成特定于文化的日期模式

javascript - 在父级内部移动具有相同类的多个 div

javascript - 如何使用 javascript 创建导航菜单?单击菜单选项后如何平滑滚动到部分?