let const 定义变量 , *****常用
1-不能重复定义
2-没有声明提升,变量只能先定义 后使用
3-新增块级作用域(局部作用域) 使用let 定义id变量 在代码内 就是局部变量,不是全局变量
// Cannot access 'a' before initialization
// console.log(a); 暂时性死区
//不能在未定义a前访问a
//console.log(a);
let a = 1;
//变量a已经被声明不能再次声明
// Uncaught SyntaxError: Identifier 'a' has already been declared
//let a = 1;
console.log(a); //1
//var 可以声明多次 可以先访问后定义 但是后要必须定义
//未定义b会报错ncaught ReferenceError: b is not defined
console.log(b)
//b未定义
console.log(b); //undefined
//var b = 2;
// var b = 2;
console.log(b); //2
if (a === 1) {
console.log(11);
let age = 19;
var ppp = 20;
}
console.log(ppp); //20
//if语句只是添加了一个条件判断
//还是在全局的
//var 预解析会提前
console.log(ppp)//20
//let不会像var 预解析
// console.log(age); //报错 age is not defined
/*
let 变量
const 常量 ,常量不能被重新赋值,量必须在定义的时候赋值
*/
let a1 = 10;
a1 = 200;
console.log(a1); //200
const PI = 3.1415;
//TypeError: Assignment to constant variable. 修改固定变量
//不能赋值常变量
// PI = 3.1415926;
let a2;
a2 = 300;
console.log(a2);
//报错
// 常量必须在定义的时候赋值
//Missing initializer in const declaration
//const a3
//a3 = 223;
const obj = { name: "zhangsan" };
//修改对象的属性
obj.name = "lisi";
console.log(obj); //{name: 'lisi'}
//报错
//赋值给常变量
//: Assignment to constant variable.
obj = { age: 17 };