let,const及解构赋值

Ecmascript-6
ES6 发布时间2015-6月,又称ECMAScript 2015

http://kangax.github.io/compat-table/es6/

作用域

let const

let 块级作用域

  • 在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死 区”(temporal dead zone,简称TDZ)
  • 不允许重复声明
  • let声明的变量不属于window的属性
	console.info(c); let c;
	
	typeof c; let c;
	
	var tmp =123; if(true) { tmp = 456; let tmp; }
	
	var flag = true;
	if(flag) {
		let flag;
	}
	

为什么引入块级作用域

  • 内层变量覆盖外层变量
  • 内层变量泄漏到全局变量

const 常量

  • 常量值必须初始化声明
  • 一旦声明,常量的值就不会改变
  • 与let一致,存在暂时性死 区

跨模块常量

a.js

	export const A = 1;
	export constt B = 2;

b.js

	improt * as Constants from './a'
	console.info(Constants.A); //1

c.js

	import {A, B} from './a'
	console.info(A);

解构赋值

数组解构赋值

语法

var [v1,v2...vn] = array
let [v1,v2...vn] = array
const  [v1,v2...vn] = array
var [a,b,c,d] = [1,2,3,4];
console.info(a);

对象解构赋值

语法

var {v1, v2,...vn } = { vn....v2..v1}

字符串解构赋值

语法

const [a,bc,c] = 'hello-string';
console.info(a,b,c);

用途

  • 变换变量的值 [x, y] = [y, x]
  • 从函数返回多个值 return [1,2,3] return
  • 函数入参默认值
  • 迭代map很方便 for( let [key,value] of map)
  • 模块加载-》 const { sourcemap } = require("source-map");
posted @ 2020-05-08 08:46  pengsn  阅读(371)  评论(0编辑  收藏  举报