gpt4 book ai didi

javascript - 为什么 "foo = foo || {};"不起作用?

转载 作者:搜寻专家 更新时间:2023-11-01 05:05:57 26 4
gpt4 key购买 nike

我在我的浏览器控制台中尝试使用一些 javascript,但不确定为什么它不起作用。控制台中的以下代码和我尝试的 jsfiddle 会引发错误:Uncaught ReferenceError: foo is not defined

foo = foo || {}; 

我对此的解释是:如果全局对象(在本例中为窗口)的 foo 不存在,则将其创建为一个空对象。

或者,代码 window.foo = window.foo || {};按我的预期工作。使用 foo = 'bar' 预先为 foo 赋值使得原始语句在之后运行时也能正常工作。

最佳答案

你必须检查是否foo首先定义:

foo = typeof foo !== 'undefined' ? foo : {};

这可能有点不直观,但是未定义和值为 undefined 是有区别的(当 window.foo 没有 window 属性时,foo 返回)。

更好的方法是添加 var关键词:

var foo = foo || {};

这是有效的,因为 JavaScript 将变量声明提升到当前范围的顶部,声明 foo并给它一个值 undefined :

var foo;

foo = foo || {};

关于javascript - 为什么 "foo = foo || {};"不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16272458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com