1. 是否存在变量提升?
1.使用 var 声明的变量存在变量提升
2.使用 let const 声明的变量不存在变量的提升
变量提升:变量在声明之前可以进行使用,并且代码不会报错 代码会提前进行一个预解析
预解析:在浏览器拿到js代码将要执行之前,会整体的解读一遍js文件,把其中的var声明的变量还有function提前定义
console.log(a); //undefined 在没有定义之前使用a代码不报错 值为undefined
var a = 10; //使用var声明的变量存在变量提升
2. 是否存在暂时性死区?
- 使用 var 声明的变量不存在暂时性死区
2.使用 let const 声明的变量存在暂时性死区
暂时性死区:在用 let 声明一个变量之前,都不能使用这个变量,否者就会报错,在这之前的代码对于这个变量来说就是暂时性死区
console.log(a)
let a = 10;
3. 是否允许重复声明变量?
1.使用 var 声明的变量可以重复声明
2.使用 let const 声明的变量不可以重复声明
var a = 10;
var a = 20; // 不会出现报错
let b = 10;
let b = 20; // Uncaught SyntaxError: Identifier 'b' has already been declared
4. 是否存在块级作用域?
1.使用 var 声明的变量不存在块级作用域
2.使用 let const 声明的变量存在块级作用域
作用域:全局作用域 局部作用域 (函数作用域) 块级作用域
var a = 10;
for (var a = 0; a <= 10; a++) {
}
console.log(a) // 11
let a = 10;
for (let a = 0; a <= 10; a++) {
}
console.log(a) // 10
5. 是否能修改声明的变量?
1.使用 var let 声明的变量可以重复修改
2.使用 const 声明的变量不可以重复修改
3.使用 const 声明的变量是一个引用数据类型,只要不去修改内存地址,那么这个数据里的内容是可以重复修改的、
var a = 10;
a = 20
let a = 10;
a = 20
const a = 10;
a = 20 // Uncaught SyntaxError: Identifier 'a' has already been declared
//const声明的变量 如果赋值为一个引用数据类型的值,那么是可以修改值里面的内容的,只要不去修改这个变量所指向的内存空间地址即可
const 应用?
const PI = 3.1415926;
const API = "http://www.baidu.com";