作用域分三个:(全局作用域、函数作用域、块级作用域)
一:全局作用域
全局作用域是设置在最顶级域window里面的,当前页面任何地方都可获取到的。
var a='hello world';
console.log(a); //hello world
或者:console.log(window.a); //hello world
(其实全局变量就是设置到了window变量内了,所以在window里面肯定能找到设置的全局变量)
二:函数作用域
var关键字创建在函数内部的变量只能在函数这个局部内被获取,函数外是没办法获取到的。
function fun(){
var a='hello world';
console.log(a); //hello world
}
fun();
//函数外获取
console.log(a); //a is not defined(报错)
三:块级作用域(es6)
let关键字创建在某一块级的变量,且只能在块级区域内获取到;
//一般var创建的变量
function fun(){
var arr=[1,2,3];
for(var i=0;i<arr.length;i++){
console.log(i); //0,1,2
}
console.log(i); //3
}
fun();
//let创建的变量
function fun(){
let arr=[1,2,3];
for(let i=0;i<arr.length;i++){
console.log(i); //0,1,2
}
console.log(i); //a is not defined(报错)
//这个时候的i只能在for内被获取,在定义的块级{}以外都将获取不到
}
fun();