美文网首页
ES6之let与const

ES6之let与const

作者: lionlsc | 来源:发表于2018-10-20 23:17 被阅读0次

在ES6中新增加了let和const,现在来看看他们的基本用法。

let:

1:不存在变量提升

    var命令会发生“变量提升”现象,即变量可以先使用,再声明,值为undefined。这种现象多少是有点奇怪的,按照一般的逻辑,变量应该在声明语句之后才可使用。

    为了纠正这种现象,let命令改变了语法行为,他所声明的变量一定要声明之后使用,否则直接报错。下面来看例子

eg:

            //var情况

            console.log(foo);  //控制台会输出undefined

            var foo=2;

            //let情况

            console.log(bar);  //控制台直接报错

            let bar=2;

2:暂时性死区

      用let定义的变量,和它所在的作用域相绑定在一起,不再受外部的影响。

3:不允许重复声明

      let不允许在相同作用域内重复声明同一个变量

const:

     对于const命令,它声明了只读的常量。一旦声明,常量的值不能改变。const实质上保证的并不是变量的值不得变动,而是变量指向的那个内存地址不得改动,对于简单的数据类型(数值,字符串,布尔值)而言,值就保存在变量指向的内存地址中,因此等同于常量。但对于复合类型的数据(主要是对象和数组)而言,变量指向的内存地址保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,这完全不能控制。因此,将一个对象声明为常量时必须非常小心

eg:

const foo={};    //声明一个空对象

foo.prop=123;  //给这个用const声明的对象增加prop属性

console.log(foo.prop);  //控制台不报错,能正常输出123

let A={};  //再用let定义一个新数组

foo=A;   //控制台报错,foo的地址不能被修改

如果想要将对象冻结,应该使用下述语句

const foo=Object.freeze({});

除了将对象本身冻结,对象的属性也应该冻结

let constantize=(obj)=>{

                Object.freeze(obj);

                Object.keys(obj).forEach((key,i)=>{

                    if (typeof obj[key]==='object'){

                        constantize(obj[key]);

                    } 

            })

    };

相关文章

  • ES6之 let 和 const 命令

    ES6 之 let 和 const 命令 1、let 命令 1.1、基本用法 ES6 新增了let命令,用来声明变...

  • TS中 var 和 let 的区别

    let 和 const 是 ES6 中新增的声明对象的类型。与 var 相比,let 和 const 不存在...

  • JavaScript ES6 - let 与 const 使用方

    ES6 语法: let 与 const 本文主要讲解 let / const / var 关键字相关内容, 解释了...

  • (JS)

    ES6 let、const和var的区别 let和const声明变量不存在变量提升 let和const不能重复声明...

  • 认真的变量

    ES6加了更多特性,let,const使程序更加的严格与规范。 要使用let,const等严格变量,要在文件首行写...

  • es6,es7,es8语法总结

    ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用...

  • ES 6 7 8 随笔 QAQ

    ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用...

  • es6 :let const 解构赋值

    let,const let和const是es6新增的两个变量声明关键字,与var的不同点在于:(1)let和con...

  • ES6(let 与 const)

    ES6中引入了let 和 const来声明变量,我们来看下let 和 const 的使用 一、let let定义的...

  • react 入门基础(一)之ES6

    ####ES6 let const var 三者的区别 ### 1. let const 不能重复声明变...

网友评论

      本文标题:ES6之let与const

      本文链接:https://www.haomeiwen.com/subject/xsrvzftx.html