let, const, var的区别详解!

157 阅读2分钟

一.关于以上let const var的区别我总结了以下几条

标题是否可以注册到window对象里
var
const
let
1.var a = 100;
console.log(window.a); // 100

2.let b = 200;
console.log(window.b); // undefined

3.const c = 300;
console.log(window.c); // undefined
标题是否可以重复声明,并且后面的会覆盖前面
var
const
let
1.var a = 100;
var a = 200;
console.log(a);  // 200

2.let a = 100;
let a = 200;
console.log(a); // Cannot redeclare block-scoped variable 'a'.

3.const a = 100;
const a = 200;
console.log(a); // Cannot redeclare block-scoped variable 'a'.
标题是否可以声明不赋值
var
let
const
1.var a;

2.let b;

3.const c;'const' declarations must be initialized.
标题是否有变量提升
var
let
const
1.console.log(a) // undefined
var a = 100;

2.console.log(a) // Uncaught ReferenceError: Cannot access 'a' before initialization
let a = 100;

3.console.log(a) // Uncaught ReferenceError: Cannot access 'a' before initialization
const a = 100;
标题是否有生成作用域的效果
var
let
const
1.if(true){
var a = 100;
}
console.log(100)

2.if(true){
let a = 100;
}
console.log(a) // Uncaught ReferenceError: a is not defined

3.if(true){
const a = 100;
}
console.log(a) // Uncaught ReferenceError: a is not defined
标题是否会造成一个暂时性的死区
var
let
const
1.var a = 200;
function fn(){
   console.log(a)  // undefined
   var a = 300
}
fn()

2.var a = 200;
function fn(){
  console.log(a)  // 
  let a = 300
}
fn()
// Uncaught ReferenceError: Cannot access 'a' before initialization

3.var a = 200;
function fn(){
  console.log(a)  // 
  const a = 300
}
fn()
// Uncaught ReferenceError: Cannot access 'a' before initialization
标题是否可以被修改
var
let
const
1.var a = 100;
a = 200;

2.let b = 300;
b = 400;

3.const c = 500;
c = 600  // Uncaught TypeError: Assignment to constant variable.

8.注意const 不能修改内存地址,但是可以修改内存中的属性

原对象:const obj = { username: '135', password: '123' }

const obj = { gender: 'male' } // Uncaught TypeError: Assignment to constant variable.
1.const obj = { username: '135', password: '123' }
obj.username = '456'

2.console.log(obj) // {username: '456', password: '123'}
obj.gender = 'female'

3.console.log(obj) // {username: '456', password: '123', gender: 'female'}

点击该链接获取更多知识!

blog.csdn.net/xiewenhui11…