变量的作用域,let,const详解
在javascript中, var定义变量实际是有作用域的。
假设在函数体中声明,则在函数体外不可以使用~(非要想实现的话,后面可以研究一下闭包
function qj(){
var x= 1;
x = x + 1;
}
x=x + 2; //uncaught ReferenceError: x is not defined
如果两个函数使用了相同的变量名,只要在函数内部,就不冲突
function qj(){
var x =1;
x = ×+1;
}
function qj2() {
var x = 'A';
×=× + 1;
}
假设,内部函数变量跟外部函数的变量重名
function qj(){
var x = 1;
function qj2(){
var x ='A";
console.log( 'inner'+x); // outer1
}
console.log( 'outer'+x); //innerA
qj2()
}
qj()
假设在JavaScript中函数查找变量从自身函数开始~,由"内"向“外”查找.假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数的变量。
全局变量var
var x = 'xxx ';
alert(x);
alert(window.x);//默认所有的全局变量,都会自动绑定在 window对象下:
局部变量let
function aaa(){
for (let i = o; i < 100; i++){
console.log(i)
}
console.1og(i+1); //uncaught ReferenceError: i is not defined
}
建议大家都是用let去定义局部作用域的变量
常量const(ES6)
const PI= "3.14';//只读变量
conso1e.1og(PI);
PI = '123'; // TypeError: Assignment to constant variable.
console.log(PI);