b.g*_*b.g 7 html javascript variables
我在W3Schools上发现了这些陈述.
使用JavaScript,全局范围是完整的JavaScript环境.在HTML中,全局范围是窗口对象.所有全局变量都属于window对象.您的全局变量(或函数)可以覆盖窗口变量(或函数).
这些语句是否意味着全局变量和窗口变量基本相同?我可以从另一个窗口访问一个窗口变量,因为它与窗口对象相关联,或者一旦我们导航到另一个窗口就删除了窗口对象?
还有这个:
任何函数(包括窗口对象)都可以覆盖全局变量和函数.
一个相关的例子如下:
<p>
In HTML, all global variables will become window variables.
</p>
<p id="demo"></p>
<script>
var carName = "Volvo";
// code here can use window.carName
document.getElementById("demo").innerHTML = "I can display " + window.carName;
</script>
Run Code Online (Sandbox Code Playgroud)
什么是窗口对象/变量,它与全局对象/变量有什么不同?
我真的很困惑.任何人都可以用一个例子详细说明吗?
所有JavaScript代码都在某些环境中执行,最常见的是在浏览器中执行.执行的代码必须在称为全局上下文或全局范围的某个"根"范围内执行(将其视为主容器).在您的浏览器中,此"根"范围是窗口对象(每个选项卡/页面/ iframe的唯一窗口对象).
这就是为什么在示例中变量在全局范围内声明时,var carName = "Volvo";您可以在窗口对象上访问此变量window.carName,因为在浏览"窗口"对象时是全局对象.
当您使用Node执行javascript时,例如,全局对象非常适合命名,global并且在该环境中,如果您声明var carName = "Volvo";也可以使用global.carName(仅在nodejs REPL上为true,则var文件中的声明不会附加到global对象).
详细说明:
var myObject = { };
myObject.myVariable = 1;
console.log(myObject.myVariable); // logs 1
Run Code Online (Sandbox Code Playgroud)
myVariable 在myObject上创建,这是显式完成的.
var myVariable = 1; // behind the scenes this declerations is doing window.myVariable = 1;
console.log(window.myVariable); // logs 1
Run Code Online (Sandbox Code Playgroud)
myVariable隐式地在window对象上创建,该对象在浏览器的上下文中是全局对象.
我希望这能澄清情况.
为了更好的解释,我强烈推荐这本书系列https://github.com/getify/You-Dont-Know-JS 专门针对这个问题https://github.com/getify/You-Dont-Know-JS/ BLOB /主/范围%20%20closures/README.md#你,不要知-JS-范围-关闭
| 归档时间: |
|
| 查看次数: |
23153 次 |
| 最近记录: |