ES6 知识碎片1
来源:互联网 发布:淘宝批量删除订单 编辑:程序博客网 时间:2024/06/10 19:09
typeof 非安全
在使用let
声明的变量前,使用typeof
函数检测变量是否存在,现在是非安全的了,会出现异常,原因是因为let
的暂时性死区引起的。
typeof a;//ReferenceError: a is not definedlet a = 2;
不允许重复声明
let
不允许在相同作用域内,重复声明同一个变量。
// 报错function () { let a = 10; var a = 1;}// 报错function () { let a = 10; let a = 1;}
块级作用域中,函数声明将当成作用
var
声明的变量一样
function f() { console.log('I am outside!'); }(function () { // var f = undefined; //在 ES6中相当于这样。 if (false) { // 重复声明一次函数f function f() { console.log('I am inside!'); } } f();//在 ES5中为:I am inside! //在 ES6中出 TypeError: f is not a function 异常}());
用
const
定义的常量
只是锁定了该变量指向的引用,具体的值还是可以改变的,如下:
const arr = [];arr.push(1);//不会出错arr.length = 0;//不会出错arr = 2;//会出错Uncaught TypeError: Assignment to constant variable.//如果想要将变量值也锁定,需要使用 `Object.freeze()`函数const foo = Object.freeze({});// 常规模式时,下面一行不起作用;// 严格模式时,该行会报错foo.prop = 123;
除了将对象本身冻结,对象的属性也应该冻结。下面是一个将对象彻底冻结的函数。
var constantize = (obj) => { Object.freeze(obj); Object.keys(obj).forEach( (key, i) => { if ( typeof obj[key] === 'object' ) { constantize( obj[key] ); } });};
解构赋值中的默认值
ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,如果一个数组成员不严格等于undefined,默认值是不会生效的。
let [x = 1] = [undefined];x // 1let [x = 1] = [null];x // null
对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。
let { foo: baz } = { foo: "aaa", bar: "bbb" };baz // "aaa"foo // error: foo is not defined
字符串的解构赋值
字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。
const [a, b, c, d, e] = 'hello';a // "h"b // "e"c // "l"d // "l"e // "o"
不借助三方变量,交换两个变量
let x = "abc", y = 2;[x, y] = [y, x];x;//2y://"abc"
阅读全文
0 0
- ES6 知识碎片1
- 知识碎片
- 知识碎片
- 知识碎片
- 知识碎片
- 知识碎片
- 知识碎片
- 碎片知识
- Android 知识碎片
- Android 知识碎片
- 知识碎片之整理
- HTML/css碎片知识
- ios碎片知识汇总
- C#知识碎片
- Mysql知识碎片
- Uboot碎片知识
- android知识碎片
- iOS 知识碎片记录
- [RK3288][Android6.0] Mali GPU基本知识
- POST与GET
- adb的使用!!!!!!!!
- 正态分布(Normal distribution)又名高斯分布(Gaussian distribution)
- 启动TOMCAT报错 java.util.zip.ZipException: invalid LOC header (bad signature)
- ES6 知识碎片1
- SVN版本update冲突详解
- 《分布式服务架构原理设计与实战》第8章敏捷开发笔记
- 内存泄露和内存溢出
- Android不使用图片框架,实现加载类似微博超长图片的技巧手法;
- 【动规】POJ 1141 Brackets Sequence
- Python 发送Email
- 初识JQuery,上课笔记
- 将查询的数据写到redis缓存中