let,const,var的三者的异同(特点与区别)

描述

var,const,let都可以的声明变量,

例如

var a = 1;
const b = 1;
let c = 1;

一.var的特点

1.存在变量提升

console.log(a);//undefined
var a = 10;
var a;
console.log(a);//unfined
a = 10;
console.log(a);//10

2.一个变量可以多次声明,后买的声明会覆盖前面的声明

var a = 10;
var a = 20;
console.log(a);//20

3.在函数种使用var,是局部的

var a = 10;
function change(){
    var a =20;
    return a;
}
condole.log(a);//10
console.log(change());//20;

4.如果var声明变量不在函数内部,则该变量是全局的

var a = 10;
function change(){
    a = 20;
}
change();
console.log(a);//20;

二.let的特点

1.不存在变量提升,let在声明前,该变量不能使用(暂时性死区).

console.log(a);//因为a后面使用let声明的,这里会报一个错误
let a = 10;

2.let可以声明变量,在块级作用域内有效

{
    let a = 10;
}
console.log(a);//块级作用域,这里会报错,a is not defined

3.let不允许在同一作用域中重复声明,

let a = 10;
let a = 20;
//报错

三.const

let有的const都有,在let基础上还有以下特点:

1.const可以声明只读的变量,声明后,值不能被改变

扫描二维码关注公众号,回复: 14813299 查看本文章
const a = 10;
a = 20; //Assignment to constant variable

2.const声明的变量并不是值不能改变,而是变量指向的内存地址不能改动,如果使用const声明一个对象的话,对象内属性可以发生改变

const cat = {
    name:'Tom',
    age:3
}
cat.age = 4; //可以改变对象内属性

cat={
    name:'Garfield',
    age = 4
}//'cat' has already been declared

3.const必须初始化

const a;//SyntaxError: Missing initializer in const declaration
const a=10;

区别

1.变量提升

var声明的变量存在变量提升,变量可以在声明之前是使用,值为undefined

let和const声明的变量,必须先声明后使用,如果在声明前使用会报错

2.作用域

let和const存在块级作用域

而var不存在块级作用域

3.重复声明

var允许重复声明变量

let与const不允许在同一作用域下重复声明变量

4.修改声明的变量

var 和 let都可以修改声明的变量

const声明一个常量,常量值不能发生改变,如果声明的是一个对象,可以修改对象里的属性,而对象本身不能被修改,也就是内存地址不能被修改

猜你喜欢

转载自blog.csdn.net/Angel_Tears_/article/details/127281162