var let const区别

1.let和var用来声明变量,const用来声明常量

变量就是赋值后可以改变它的值,常量就是赋值后就不能改变它的值

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所不得改动.对于基本类型的数据(数值、字符串、布尔值...),值就保存在变量指向的那个内存地址,因此等同于常量。但对于引用类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是不变的无法保证

const a; // 这是不允许的

const a = 3.14; // 必须赋值    a=5;//报错

const arry=['bbbb','aaaa'];  arry[0]='ccc';console.log(arry[0])

2.var是函数作用域,let和const是块级作用域。

花括号{}就是块级作用域,函数作用域就是函数里面的内容。

{    var a = 'Smiley';}       console.log(a) //正确打印

{    let a = 'Smiley';}      console.log(a)// a is not defined

var result = new Array();

for (var i=0; i<10; i++) {
  result[i] = function() {
    return i;
  }
}
console.log(result[0]()) 

结果返回10,这是因为所有的i都使用同一个引用,而i最终会被更新为10,因此,result中所有函数都会返回10

var result = new Array();

for (let i=0; i<10; i++) {
  result[i] = function() {
    return i;
  }
}
console.log(result[8]());//8

在每次循环当中,都会创建一个新的let i,当前的i只在本轮循环内有效,所以每一次循环的i其实都是一个新的变量

3、var有变量提升的功能,即变量可以在声明之前使用,值为 undefined。let和const没有

console.log(a);  //undefined

var a = 4;

console.log(a); //a is not defined

let a = 4;

4.使用 var 在全局级别(在函数外部)进行声明都会自动成为 window 对象上的一个属性

var name = 'John';

window.name === name // true

使用 let 或者 const 在函数外部声明一个变量,它不 会被添加到 window 对象中

let job = 'job'; window.job === job // false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值