js ES6 声明变量的方式 

目录

一、概述

二、let 和 const

1、二者异

2、二者同

三、ES6 模块——export 命令和 import 命令

四、class(类)


一、概述

ES5 声明变量只有两种方式:var 和 function。

ES6 声明变量的方式有 6 种:

  • var
  • function
  • let
  • const
  • import
  • class 

 

二、let 和 const

1、二者异

  • let 用来声明一个变量;而const 用来声明一个常量,一旦声明,常量的值就不能改变。其实,const 保证的并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动:
    • 对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量;
    • 对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const 只能保证这个指针是固定的(即总是指向另一个固定的地址)。
const a = [];
a.push('Hello');        // 可执行
a.length = 0;           // 可执行
a = ['Dave'];           // 报错 TypeError: Assignment to constant variable.

const foo = {};
foo.prop = 123;         // 可执行
foo.prop                // 可执行
foo = {};               // 报错 TypeError: Assignment to constant variable.


/**
 * 彻底冻结一个对象,要使用 Object.freeze() 方法,具体实现分两步:
 *     1.冻结对象本身;
 *     2.冻结对象的属性。
 */
var constantize = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach( (key, i) => {
    if ( typeof obj[key] === 'object' ) {
      constantize( obj[key] );
    }
  });
};

const a = {};
constantize(a);
// 常规模式时,下面一行不起作用;
// 严格模式时,该行会报错
a.name = "Mary";
  • let 可以先声明,后赋值;而 const 一旦声明常量,就必须立即初始化,不能留到以后赋值。
let a;// 不报错
const b;// 报错 SyntaxError: Missing initializer in const declaration

2、二者同

  • 只在声明所在的块级作用域内有效。
  • 不提升,存在暂时性死区,只能在声明的位置后面使用。
  • 不可重复声明。
  • 在大括号内,使用 let 创建一个变量或使用 const 创建一个常量时,都会形成一个块级作用域。

 

三、ES6 模块——export 命令和 import 命令

https://blog.csdn.net/mChales_Liu/article/details/116934722

 

四、class(类)

https://blog.csdn.net/mChales_Liu/article/details/116933461

 

若要更深入的学习,请参见阮老师的大作:https://es6.ruanyifeng.com/#README

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值