var与let与const

let与const都是只在声明所在的块级作用域内有效。

let声明的变量可以改变,值和类型都可以改变,没有限制。

const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

const a ;//报错,一旦声明变量,应该立即赋值!!

const b = 2;
b = 3//报错,因为定义常量之后不能成重新赋值!!

 

对于复合类型的变量,如数组和对象,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。

const names = [];
names = [1,2,3] //出错,因为变量names指向的地址不能发生改变,应始终指向[]所在的地址!!![1,2,3]与[]不是同一个地址
//不会报错,因为names指向的地址不变,改变的只是内部数据
const names = [];
names[0] = 1
names[1] = 2
names[2] = 3

 

 var与let区别

1、作用域不同

var是函数作用域,let是块作用域。

在函数中声明了var,整个函数内都是有效的,比如说在for循环内定义的一个var变量,实际上其在for循环以外也是可以访问的

而let由于是块作用域,所以如果在块作用域内定义的变量,比如说在for循环内,在其外面是不可被访问的,所以for循环推荐用let

 

 

 

  

2、let不能在定义之前访问该变量,但是var可以。

let必须先声明,再使用。而var先使用后声明也行,只不过直接使用但没有定义的时候,其值是undefined。var有一个变量提升的过程,当整个函数作用域被创建的时候,实际上var定义的变量都会被创建,并且如果此时没有初始化的话,则默认为初始化一个undefined

  

3、let不能被重新定义,但是var是可以的

  

 
posted @ 2022-07-17 23:23  Python喵  阅读(189)  评论(0编辑  收藏  举报