Gol*_*hip 3 javascript variables scope google-chrome reload
我正在做一些javascript范围测试,我遇到了变量值的问题.
首先我执行了这段代码:
function changeName() {
name = "Ronaldinho";
}
changeName()
console.log(name);
Run Code Online (Sandbox Code Playgroud)
控制台的输出是:罗纳尔迪尼奥
然后我只执行了这段代码:
console.log(name);
Run Code Online (Sandbox Code Playgroud)
控制台的输出仍然是:罗纳尔迪尼奥
我在使用Google Chrome.我试图清理缓存,页面重新加载的所有选项(ctrl + F5/shift + F5/ctrl + R/shift + R /右键单击重新加载图标和"强制重新加载并清除缓存"),清除缓存,控制台清除, enable de option"禁用缓存(当DevTools打开时)".
它仅在我关闭并打开新选项卡时有效.
如果您忘记了varjavascript中的关键字,则将在根对象中创建变量.在浏览器中,根对象是window.所以你会找到你的变量window.name.如果你想删除它,你可以做到delete window.name
编辑:在Chrome控制台中,执行的代码受到保护.Chrome使用的是其他对象window.你会找到你的变量this.name.所以你可以删除它delete this.name.
更改变量的名称,请尝试使用"myName".由于您从不使用"var"关键字,name因此位于全局范围内.
但其他事情发生了:window.name已经被采取了!因为窗口name与之关联.(详情请参阅window.open参考资料)
或者更好:在99%的情况下使用var关键字来声明变量,其余的时间,不要声明变量(意思window[anyVariableName]是不是真正声明变量,而不是定义窗口对象的新键,隐式可用)在浏览器的上下文中无处不在).
最终代码(如果你想保留变量name):
var name;
function changeName() {
name = "Ronaldinho";
}
console.log(name); // undefined
changeName()
console.log(name); // "Ronaldinho"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4203 次 |
| 最近记录: |