JavaScript提升和作用域
JavaScript hoisting and scope
本文关键字:作用域 JavaScript 更新时间:2023-09-26
为什么foo()函数记录undefined
?第一个text
变量是一个全局变量,所以foo()
应该可以访问它。
var text = "outside";
function foo() {
console.log(text);
var text = "inside";
}
foo();
尽管var
语句在console.log()
语句之后,但该声明被提升到函数的开头。这里声明了一个局部变量,遮蔽了全局变量。但是初始化是在到达console.log()
语句之后才进行的。
所以你的函数等于:
function foo() {
var text;
console.log(text);
text = 'inside';
}
如果您没有使用var
声明,那么您将继续使用全局变量,并且直到console.log()
之后才会发生重新赋值。
相关文章:
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- Javascript作用域和Ajax调用;工作不正常
- 带有KendoUI组件的Javascript变量作用域
- TypeScript(JavaScript)中的项作用域
- 作用域问题-此函数是否形成闭包-JavaScript
- switch语句中的Javascript作用域
- JavaScript作用域:如何创建具有不同值的匿名函数
- 访问Javascript对象-Node.js的作用域问题
- Javascript中的内部函数作用域
- 什么's JavaScript数组中项目的作用域
- Javascript变量作用域:从回调函数中提取变量
- 为什么全局变量没有't似乎受到内部作用域(Javascript)的影响
- 对象变量作用域javascript
- Javascript函数作用域[Javascript Essentials]
- 私有作用域Javascript的最好方法
- 可变作用域Javascript模块模式
- 方法中的变量作用域(Javascript)
- 如何将作用域JavaScript作用域分离为多个文件(UbuntuJS作用域)
- 限制共享变量的作用域(Javascript)
- 将函数的参数提取到全局作用域(javaScript)