什么是 作用域? (这是一道面试题)
*就是变量可以起作用的范围
作用域分为两个
- 全局作用域(直接在 script 内书写的代码)
再此作用域创建的变量, 我们叫做全局变量, 在当前 script 标签内的哪里都能使用
在 JS 中, 全局作用域中有一个 提前给我们准备好的 对象(一种数据格式, 后续会详细的讲解)
这个 对象叫做 window
我们创建的全局变量, 会被自动添加到 window 对象中
- 局部作用域(在 JS 中, 只有函数能够创建局部作用域)
在此作用域创建的变量, 只能在当前作用域使用, 超出这个作用域(也就是在函数外边)去使用, 就会找不到变量
var num = 100
// 假设 间隔 500 行
console.log(num)
function fn() {
var sum = '我是在函数 fn 内部创建的变量, 我是局部变量, 所以我只能在当前函数内使用'
var abc123 = '我是在 fn 函数内部创建的局部变量'
console.log(sum)
}
fn()
// console.log(sum) // 这里因为超出了这个变量的使用区间, 所以会 报错
var abc = '我是一个全局变量 abc' // 创建一个全局变量 abc
console.log(window)