const命令

1:声明常量(只在当前代码块中有效)---注意声明的常量可以是对象,但是常量储存的是对象的地址,地址声明后不可变,但是可以给常量对象添加属性


全局变量的属性

1:window和global分别是浏览器和Node.js的全局对象。

2:在ES5中,全局对象的属性与全局变量是等价的。

a = 2;

window.a //

在ES6中,var,function命令声明的全局变量依然是全局对象的属性。但是let,const,class命令声明的全局变量不属于全局对象的属性。


变量的解构赋值

一:数组的解构赋值---允许默认值---如果x属性等于null,就不严格相等于undefined,导致默认值不会生效。

二:对象的解构赋值--

var { foo, bar } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"
var { foo: baz } = { foo: "aaa", bar: "bbb" };
baz // "aaa"
foo // error: foo is not defined

三:字符串的解构赋值--

1:字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。

const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"

类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。

let {length : len} = 'hello';
len //

四:数值和布尔值的解构赋值--

1:解构赋值时,如果等号右边是数值和布尔值,则会先转为对象。

解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象。由于undefinednull无法转为对象,所以对它们进行解构赋值,都会报错。

let { prop: x } = undefined; // TypeError
let { prop: y } = null; // TypeError

五:函数参数的解构赋值

function add([x, y]){
return x + y;
} add([1, 2]); //

上面代码中,函数add的参数表面上是一个数组,但在传入参数的那一刻,数组参数就被解构成变量xy。对于函数内部的代码来说,它们能感受到的参数就是xy


六:圆括号的问题

解构赋值虽然很方便,但是解析起来并不容易。对于编译器来说,一个式子到底是模式,还是表达式,没有办法从一开始就知道,必须解析到(或解析不到)等号才能知道。

由此带来的问题是,如果模式中出现圆括号怎么处理。ES6的规则是,只要有可能导致解构的歧义,就不得使用圆括号。

但是,这条规则实际上不那么容易辨别,处理起来相当麻烦。因此,建议只要有可能,就不要在模式中放置圆括号。

可以使用圆括号的情况只有一种:赋值语句的非模式部分,可以使用圆括号。

[(b)] = [3]; // 正确
({ p: (d) } = {}); // 正确
[(parseInt.prop)] = [3]; // 正确

上面三行语句都可以正确执行,因为首先它们都是赋值语句,而不是声明语句;其次它们的圆括号都不属于模式的一部分。第一行语句中,模式是取数组的第一个成员,跟圆括号无关;第二行语句中,模式是p,而不是d;第三行语句与第一行语句的性质一致。

最新文章

  1. npm更新到最新版本的方法
  2. sql 查询
  3. duilib进阶教程 -- 改进窗口拖动 (12)
  4. Freemarker 入门示例(zhuan)
  5. iphone dev 入门实例2:Pass Data Between View Controllers using segue
  6. homework-08 C++课程课后思考与练习
  7. Hibernate(一)JDBC简介
  8. Css简介
  9. 安卓之cannot convert from Fragment1 to Fragment
  10. bootstrap data- jquery .data
  11. pg_config executable not found
  12. JAVA 通过 Socket 实现 TCP 编程
  13. HDU6278 Just h-index
  14. nginx配置模板问题404
  15. Linux中的libc和glibc
  16. python----操作文本文件
  17. SpringBoot(五)Springmvc+Mybatis+mysql
  18. Sallen-Key Active Butterworth Low Pass Filter Calculator
  19. url中是否加斜杠/
  20. Python数据可视化-seaborn

热门文章

  1. Leetcode_238_Product of Array Except Self
  2. obj-c编程16:键值编码(KVC)
  3. navicat for mysql远程连接ubuntu服务器的mysql数据库
  4. Nginx + IIS实现负载均衡 Session多站点共享
  5. <h1>02_Linux学习_命令</h1>
  6. Effective Java 第三版——39. 注解优于命名模式
  7. Vim PHP环境设置文章
  8. 基于RecyclerView的瀑布流实现
  9. 一个简单而实用的JQ插件——lazyload.js图片延迟加载插件
  10. MVC5 框架 配置 盘古分词