- 作用域就是变量在某个范围内起作用和效果
- js作用域(es6)之前:全局作用域、局部作用域
- 全局作用域:整个script标签,或者是一个单独的js文件
- 局部作用域:函数内部,在函数内部起效果和作用
- js没有块级作用域
一、全局变量
1. 在全局声明的变量
2. *特殊:在函数内部,未声明的
var num = 10 //num是一个全局变量
function fn(){
console.log(num)
}
fn()
function fn2(){
var num1 = 10 //局部变量
num2 = 20 //全局变量
}
fn2()
// console.log(num1)
console.log(num2)
二、块级作用域
js在es6新增了块级作用域
//块级作用域
//在java中
if(**){
int num = 10;
}
// 外面的是不能调用num的
但是js里可以
if(5>3){
var num = 10;
}
console.log(num)
三、作用域链
就近原则:如下代码输出为20
//作用域链
//console.log('作用域链')
var num = 10
function fn(){
var num = 20
function fun(){
console.log(num)
}
fun()
}
console.log('ss');
fn()