JavaScript里面的变量作用域:
-
在JavaScript中定义变量有两种方式:
ES6之前:var 变量
ES6开始:let 变量
-
两种定义变量方式的区别
-如果通过var定义变量,可以重复定义同名的变量,不但不会报错,而且后定义的变量会覆盖先定义的变量。
//后定义的变量覆盖先定义的变量 var num=1; var num=2; console.log(num);//输出2
-如果通过var定义变量,可以先使用后定义(又称预解析)。(不太符合,因为一般都是先定义变量,再去使用)。
// 预解析 console.log(num);//输出undefined 居然没有报错,原因是什么? var num=123; // 详细步骤为: var num; console.log(num); num = 123;
-如果通过let定义变量,不可以重复定义同名的变量,会报错。
let num=1; let num=2; 浏览器报错:Identifier 'num' has already been declared。 翻译:前面已经声明了一个变量名为num的变量。
-如果通过let定义变量,不可以先使用在定义,因为浏览器不会对let定义的变量进行预解析
console.log(num); let num=123; 浏览器报错:num is not defined
-
什么是全局变量?
全局变量就是定义在 { }外面的变量,称之为全局变量
-
什么是局部变量?
局部变量就是定义在{ }里面的变量,称之为局部变量
-
全局变量和局部变量的区别
如果是全局变量,那么有效范围是从定义变量的那一行开始直到文件的末尾都可以使用
//浏览器控制台输出了3次 123. //验证了全局变量,有效范围是从定义变量的那一行开始直到文件的末尾都可以使用