1.var
- var 可重复声明变量
<script>
var a = 6;
var a = 8;
consolog(a) //8
</script>
- var 可用于块级
<script>
{
var a = 66
}
console.log(a) //66
</script>
- var 可变量提升
第一个输出a执行顺序 相当于 var a; console.log(a); a= 'apple'; 这样输出结果声明变量a,但是未赋值,所以结果就是 underfined
第二个输出a 声明又赋值 所以结果是 apple
<script>
console.log(a) //undefined
var a = 'apple';
console.log(a) //apple
</script>
2.let
- let 不可重复声明变量
<script>
let b = 6;
let b = 8;
consolog(b) //Uncaught SyntaxError: Identifier 'b' has already been declared
//未捕获的语法错误: 标识符 b 已经被声明
</script>
- let 不可用于块级
<script>
{
let b = 88
}
console.log(b) //Uncaught ReferenceError: b is not defined
//未获取 引用错误 b 未被定义
</script>
- let 不存在变量提升
<script>
console.log(b) //ReferenceError: b is not defined
let a = 'apple';
console.log(b) //apple
</script>
3.const
- const 声明之后必须要赋值,否则会报错
const c = '51800';
console.log(c) //51800
const d; // SyntaxError: Missing initializer in const declaration
// 语法错误: const 声明中没有初始划
- const 常量意思,如果已经定义了,在修改这个常量就会报错
const c = 220
c = 330 //Uncaught TypeError: Assignment to constant variable.
//为抓取的 错误类型: 分配给的常量 变化了
console.log(c)
const aa = {
a:456,
b:789,
c:123
}
aa.c = 4562456
aa.k =1234789
console.log(aa.k) //1234789
//const只是保存了一个指向实际数据的指针,对于复杂对象类型
//(对象 object,数组 array,函数 function)数据结构变不变,const并无法控制
- 函数里面若使用了 const 和 let ,全局变量在里面就无法使用
var PI = "a";
if(true){
console.log(PI); // ReferenceError: PI is not defined,就算在外面的是let,都报错
const PI = "3.1415926";
}