var let const声明变量的区别

一,作用域

全局作用域 函数作用域  块级作用域;

var 定义的变量只有全局和函数作用域(ES5)没有块的概念,可以跨块访问,不能跨函数访问,在块级作用域内定义仍然是全局变量;

let  定义的变量只能在块作用域里访问,不能跨函数访问;

const 用来定义常量,使用时必须初始化,只能在块作用域里面访问;

块级作用域:{}里面的都是如if(){},for(){},while(){} ,(function (){})()立即执行函数也是块级作用域;

 用var 声明变量i和在里面用let声明变量j,在块作用域里面都可以访问的到;但是53行跳出二级for循环的块级作用域就报错;但是var声明的变量可以在全局访问到,因为长度问题,各位i可以在for循环55行外面打印i;可以打印出来

二,变量声明

 let var可以仅声明不赋值,const必须声明的时候就赋值;

 

声明变量都应打印到;

但是给用var 和let声明变量不赋值打印的是undefined,而const声明不赋值直接报错

 

 三,变量值是否可以修改

 let var声明变量的值可以修改 const声明的变量如果是基本数据类型则不可修改,如果是引用类型则可以修改值,不可以修改地址

上面的例子中const 定义基本数据类型Number 修改其值后报错,接着我们看下面的例子:

 

在上面的例子中修改person对象的name属性并没有报错,而且修改成功 

因为对象是引用类型的数据(地址保存在堆中,值保存在栈中),person中保存的仅是对象的指针,const仅能够保证指针不发生改变,修改对象的属性不会改变对象的指针,所以是被允许的。

我们来试着修改一下指针,让person指向一个新的对象,就会报错

 

四,是否可以在相同的作用域内重复声明

var 可以在同一作用域内重复声明,let const 不能在同一作用域内重复声明

 

 五。let 相较于var 的优势

优势体现在选项卡功能,应用多个按钮切换,for循环若换成var 则i 是全局变量循环结果为按钮的数量就无法实现

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值