ES6学习之- let 和 const 命令

本文主要介绍ES6中let和const声明变量的方法。ES6有6种声明变量的方法,let和const声明的是局部变量,只在块级区域生效,可防止数据泄露和变量污染。let类似var但有不同特性,const用于声明常量,指向对象时属性可变。

仅做个人学习交流

参考文章:http://es6.ruanyifeng.com

前提:

let 和 const 都是 ES6 中声明变量的方法。 ES6中声明变量的方法有6种:var 、function 、let、const 、class 、import 。

let 和 const 声明的变量都是局部变量。只在块级区域生效。

 

块级区域:

    1、“{......}”符号进行声明的区域;

    2、循环函数内部区域;

 

块级区域的作用:

    1、防止区域数据的泄露到全局变量中;

    2、防止内层变量污染外层变量;

    3、注意:ES5 中块级区域声明的函数将会被提升至顶部,所以为了确保最终的效果,建议使用声明函数表达式,少用函数声明式;

// 块级作用域内部的函数声明语句,建议不要使用

{

  let a = 'secret';

  function f() {

    return a;

  }

}

// 块级作用域内部,优先使用函数表达式

{

  let a = 'secret';

  let f = function () {

    return a;

  };

}

 

let:

    1、 let 是用来声明变量的,他的使用方法和 var 类似,都是可以通过“=”进行赋值的。不同的是 var 声明的是一个全局变量,而 let 声明的变量只在块级区域有效;

    2、let 不可以重复声明同一个名称的变量;

    3、声明变量之前不可以进行使用;(区别于 var ,var 声明变量前使用会得到一个 undefined 的结果,而 let 类型的变量则会报错);

    4、let 声明一个 var 同名的变量时,let 的优先级更高(在块级区域内);

 

const:

    1、const 是用来声明一个常量的,常量值是不可以修改的;

    2、const 声明的常量是一个块级常量;

    3、const 声明的变量值是通过指针指向特定的内存地址,也就是说如果指向的是一个对象,其内存地址不变的情况下,属性的变化是可以的(如果想要锁定一个对象,需要用到 freeze(object) 方法进行冻结,同时也可以通过 constantize(object[attr]) 的方法对属性进行冻结);

var constantize = (obj) => {

  // 对 obj 进行冻结,冻结之后 obj 将不能添加新的属性,但是原有属性可以进行修改;

  Object.freeze(obj);

  // 对 obj 的属性进行冻结,属性值不可修改;

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

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

      constantize( obj[key] );

    }

  });};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值