JavaScript变量的作用域
作用域就是可访问的变量的集合。
在JavaScript中变量的作用域分为两种,一种是全局作用域(变量),一种是局部作用域(变量)。
同时在 JavaScript 中, 对象和函数同样也是变量。
1.全局变量(作用于全局的变量)
// 1.全局变量 作用于全局 函数体之内可以访问// 在所有的函数外面声明的变量varglobal="全局变量"; functionfunc1() { console.log(global); } func1(); functionfunc2() { console.log(global); } func2(); functionfunc3() { console.log(global); } func3(); // 2.不声明 直接赋值的变量 为全局变量functionfunc5(){ m=10; } func5(); console.log(m);//10/*当浏览器解析到没有声明,直接赋值的变量时,会自动将变量作为 window 的一个属性。所以不声明直接赋值的变量为全局变量。*/str="hello"; console.log(window.str); // delete 关键词 删除// 全局对象可以配置属性,可以删除varnum=20; arr=[1,2,3];//window.arrconsole.log(num); console.log(arr); deletenum; deletearr; console.log(num); console.log(arr);//arr is not defined/* 生命周期1.变量从 被声明时开始2.全局变量 页面关闭时结束3.局部变量 函数执行完结束*/
当浏览器解析到没有声明,直接赋值的变量时,会自动将变量作为 window 的一个属性。所以不声明直接赋值的变量为全局变量。
全局对象可以配置属性,可以删除
全局变量,或者函数,可以覆盖 window 对象的变量或者函数。
局部变量,包括 window 对象可以覆盖全局变量和函数。
2.局部变量(只作用于函数内部的变量)
// 3.局部变量 局部作用域 // 变量在函数内声明 只作用于函数内functionfunc4(){ varx=10; console.log(x); } func4();//10//变量x作用域函数func4内部,函数外面访问不到,所以报错console.log(x);//x is not defined
视频讲解地址:
1.https://www.bilibili.com/video/BV1fQ4y1N7RE/