ES6整理:let和const命令

ES6介绍

ECMA国际标准化组,他们希望这种语言成为国际化标准兼容大部分主流浏览器,所以ECMAscript就是js的一种写作规格。ES6在2015年提出的语法,在以前大部分浏览器没有完全识别ES6语法可以在node.js等框架内进行使用,但是现在ES6语法已经被大部分浏览器所支持,可以在页面上直接运行。用ES6完全替代ECMAscript标准不太现实,所以在2016年对ECMAscript的标准进行了升级简称ES6语法。

参考资料:阮一峰老师《ES6》电子书

let和const命令
let是es6新增的命令,用来声明变量,类似于var,但是声明的变量只在let命令所在的代码块内有效。

例如:

if(true){
           var a=22;
           let b=44}//a输出22 b报错;(let让代码块标称私有)

不存在变量提升
var声明的变量会存在变量提升,在变量声明之前调用,值会自动找undefine类型,所以值找不到也没在页面上输出,这种现象不好,在let里纠正了此行为,找不到变量会进行报错。

例如: console.log(a)
      var a=11;//输出undefined
      let a=11;//输出错误

暂时性死区
只要在块级作用域内存在let命令,他所声明的变量就进行了锁定,不在受外部环境的影响。

例如:var a=11
         if(true){
           a=22;
          let a;}
   document.writeln(a);//报错,因为在if里let重新声明了a变量,就把作用在代码里进行绑定。

let不允许重复声明
let不允许和var在同一个作用域下声明同一个变量

 例如: function fun(){
               let a=10;
               var a=1;
            };//报错 

ES6的块级作用域
在函数里嵌套时,为了防止变量定义重复,可以let声明块级作用域

例如:

 function fun() {let n=1;
 if(true){
 let n=5}
 console.log(n)
 fun();//输出1

const命令
const用来声明常量,一旦声明,常量的值就不能改变

错误演示*

   1.常量定义时必须赋值
     const n;//报错
   2.常量的值就不能改变
     const PI=3.1415;
     PI=3.3;//报错
   3.常量声明不会变量提升,也会出现暂时性死区
     if(true){
  const MAX=5};MAX//输出报错

本质和原理

const实际上保证的并不是变量的值不可改动,而是变量指向的内个内存地址不可改动。对于基本数据类型,值就保存在变量指向的内存地址中,所以值不可改变,所以等同于常量。但是对于复合类型(引用类型)而言,变量指向的内存地址保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,完全不能控制。

例如:

> const emp={ } emp.name="lisi" emp.name=" zhangsan”
> document.writeln(emp.name) ;//我们可以改对象下的属性和方法 emp= [ ]
> document.writeln(emp)//但是却不能把对象变成其他类型值

*****声明变量的方式

 var ,function,let,const,class,import
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值