ES6必知必会 (一)—— 变量声明和结构赋值
本文章属于个人对es6一些比较常用的语法的总结归纳,其主要参考阮一峰大神的<a href="http://es6.ruanyifeng.com//">ECMAScript6入门</a> ,如有哪里理解不对或者不透彻的地方,还请批评指正~
ps:推荐使用es6在线调试
<b>let 和 const</b>
1.let声明的变量只有在当前代码块成效,而且不具备变量提升(即代码块中有let声明的变量提前使用会报错);
{
console.log(a) // a is not defined
console.log(b) // 2
let a = 1;
var b = 2;
}
2.let同一作用域内不允许重复声明;
3.const声明一个只读常量,一旦声明,无法更改;
4.const声明一个变量的时候,必须初始化,而且该变量只能在当前作用域有效;
5.const声明一个符合类型的数据时(主要是对象和数组),保存的是变量的内存地址,只能保证这个地址固定,不能保证数据结构不变;
const o = {};
o.name = 'hello'; //可以给对象添加属性
console.log(o); // { "name" : "hello" }
o = {}; //报错,因为o的内存地址不能改变
6.可以使用 Object.freeze()方法来冻结一个对象或者对象的某个属性;
7.ES5声明变量的方式有两种 : var 和 function; ES6声明变量的方式有六种 : var let const function import class;
<b>变量的解构赋值 </b>
1.ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值;
2.如果变量解构不成功就会返回 undefined;
3.只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值;
4.解构赋值时可以指定默认值 ( let [ foo = true ] = [] );
5.如果数组的某个成员不严格等于( === ) undefined , 默认值就不会生效;
let [x, y = 'b'] = ['a']; // x='a', y='b'
let [x, y = 'b'] = ['a', 'undefined']; // x = 'a' , y = 'undefined'
6.如果指定的默认值是一个表达式,那么该表达式是惰性求值(即只有在使用到的时候才去求值);
7.默认值可以引用解构赋值的其他变量,但该变量必须已经声明;
8.对象的解构中,变量必须与属性同名,才能取到正确的值,如果变量没有对应的同名属性,则会导致取不到值,最后等于undefined;
9.对象的解构赋值是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者;
let { foo: baz , bar } = { foo: "aaa", bar: "bbb" };
foo // foo is not defined
baz // 'aaa'
bar // 'bbb'
上述例子中 foo 是匹配的模式,baz才是变量。真正被赋值的是变量baz,而不是模式foo , bar之所以能匹配,是因为对象的解构赋值是下面形式的简写
let { foo: foo, bar: bar } = { foo: "aaa", bar: "bbb" }
10.变量的解构赋值通常用于交换变量,函数参数定义,参数指定默认值等,虽然解构赋值虽然很方便,但是解析起来并不容易,如果使用不当就会产生与预期值不同的问题~
ES6必知必会 (一)—— 变量声明和结构赋值的更多相关文章
- makefile 必知必会
Makefile 必知必会 Makefile的根本任务是根据规则生成目标文件. 规则 一条规则包含三个:目标文件,目标文件依赖的文件,更新(或生成)目标文件的命令. 规则: <目标文件>: ...
- Visual Studio 使用及调试必知必会
原文:Visual Studio 使用及调试必知必会 一:C# CODING 技巧 1:TODO 然后 CTRL + W + T,打开任务列表,选中 Comments,就会显示所有待做的任务 2: ...
- makefile 必知必会以及Makefile是怎样炼成的
Make必知必会原文链接 Makefile 必知必会 Makefile的根本任务是根据规则生成目标文件. 规则 一条规则包含三个:目标文件,目标文件依赖的文件,更新(或生成)目标文件的命令. 规则: ...
- 【MySQL 基础】MySQL必知必会
MySQL必知必会 简介 <MySQL必知必会>的学习笔记和总结. 书籍链接 了解SQL 数据库基础 什么是数据库 数据库(database):保存有组织的数据的容器(通常是一个文 件或一 ...
- 必知必会之Java注解
必知必会之Java注解 目录 不定期更新中-- 元注解 @Documented @Indexed @Retention @Target 常用注解 @Deprecated @FunctionalInte ...
- 必知必会之 Java
必知必会之 Java 目录 不定期更新中-- 基础知识 数据计量单位 面向对象三大特性 基础数据类型 注释格式 访问修饰符 运算符 算数运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 三目表达式 ...
- Java面试必知必会(扩展)——Java基础
float f=3.4;是否正确? 不正确 3.4是双精度,将双精度赋值给浮点型属于向下转型,会造成精度损失: 因此需要强制类型转换: 方式一:float f=(float)3.4 方式二:float ...
- Java面试必知必会:基础
面试考察的知识点多而杂,要完全掌握需要花费大量的时间和精力.但是面试中经常被问到的知识点却没有多少,你完全可以用 20% 的时间去掌握 80% 常问的知识点. 一.基础 包括: 杂七杂八 面向对象 数 ...
- .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)
Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C# ...
随机推荐
- 只输FLOAT值 TEXTBOX
if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && (int)e.KeyChar != 8 && (in ...
- 20170612xlVBA含方框文档填表
Sub mainProc() Application.ScreenUpdating = False Application.DisplayAlerts = wdAlertsNone 'Dim xlAp ...
- iOS UI-常用控件
#import "ViewController.h" @interface ViewController ()<UITextFieldDelegate> // 标题标签 ...
- PHP 的 HTTP 认证机制
PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本.在 Apache 模块的 PHP 脚本中,可以用 header()函数来向客户端浏 ...
- 数据仓库建模与ETL的实践
一.Data仓库的架构 Data仓库(Data Warehouse DW)是为了便于多维分析和多角度展现而将Data按特定的模式进行存储所建立起来的关系型Datcbase,它的Data基于OLTP源S ...
- MinGW的gdb调试
MinGW(Minimalist GNU for Windows)提供了一套简单方便的Windows下的基于GCC程序开发环境.MinGW收集了一系列免费的Windows是用的头文件和库文件: ...
- ArrayList与List<T>笔记
ArrayList与List<T>笔记 ArrayList是在System.Collections命名空间的一个类, 通过Add的方法添加一个项, 当进到这个类的元数据时, 可以看到这个方 ...
- Oracle Rman 增量备份与差异备份
一.增量与差异 关于Incremental增量备份级别: Oracle 9i 共有五种级别 0 1 2 3 4,0级最高-4级最低,0级是1级的基础以此类推. Oracle 10g官方文档明确指出增量 ...
- CDMA学习
1.关于RC:http://www.mscbsc.com/askpro/question74915 2.CDMA知识要点:http://wenku.baidu.com/view/d4511442a89 ...
- 经典T-SQL代码
1. N到M条记录(要有主索引ID)SelectTop M-N *From [Table] Where ID in (SelectTop M ID From [Table]) Orderby ID ...