// var a = 10;
// let b = 20;
// const c = 30;
var和let比
console.log(a) //undefined
var a = 10;
// 不存在变量提升
console.log(a) //报错
let a = 10;
//
var a = 10;
var a = 20;
console.log(a)
//// 不允许重复声明
let a = 10;
let a = 20;
console.log(a)
////
if(true){
var a = 10;
}
console.log(a);
// let具有块级作用域:花括号就是作用域
if(true){
let a = 10;
}
console.log(a); //报错
//
function fn(){
a = 20;
var a = 10;
}
fn()//不报错
暂时性死区
function fn(){
a = "hello";
let a = 10; //不允许被赋值
//
}
fn() //报错
// const和let的特点除了一个,其他都一样
let a = 10;
a = 20
console.log(a)
//
//// const保存的固定的内容不是值,而是地址
//// const的变量,不允许地址被修改但是值可以修改。
//
const a = 10;
a = 20;
console.log(a) //报错
demo:修改值而不修改地址
const obj = {name:"admin"}
obj.name = "root";
console.log(obj)