在同一个script中,let和var使用的全局有什么区别
时间: 2023-07-15 15:13:26 浏览: 48
在同一个 `script` 中,`let` 和 `var` 声明的变量作用域不同,且在全局作用域中使用的方式也不同。
1. 作用域
使用 `var` 声明的变量具有**函数作用域**,而使用 `let` 声明的变量则具有**块级作用域**。函数作用域意味着变量只在声明它的函数内部可见,而块级作用域意味着变量只在声明它的代码块内部可见。
例如,下面的代码中使用 `var` 声明了 `i` 变量,该变量在 `for` 循环结束后仍然存在于全局作用域中,并且其值为 10:
```javascript
for (var i = 0; i < 10; i++) {
// some code here
}
console.log(i); // 10
```
而使用 `let` 声明的变量 `i` 则仅在 `for` 循环内部可见,循环结束后将不存在于全局作用域中:
```javascript
for (let i = 0; i < 10; i++) {
// some code here
}
console.log(i); // ReferenceError: i is not defined
```
2. 全局使用方式
使用 `var` 声明的变量会成为全局对象的属性,而使用 `let` 声明的变量不会。例如:
```javascript
var x = 1;
console.log(window.x); // 1
let y = 2;
console.log(window.y); // undefined
```
因此,在同一个 `script` 中,使用 `var` 声明的变量可以在全局作用域中被其他代码访问和修改,而使用 `let` 声明的变量则只能在当前作用域中被访问和修改。