es6摘抄自网络
Posted pengjohn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6摘抄自网络相关的知识,希望对你有一定的参考价值。
ES6
①let
和const
只能定义变量一次,避免重复定义带来的问题;
②let
和const
会被锁定在声明的代码块内,成为暂时性死区(
Temporal Dead Zone
);
③let
和const
两个代码块中拥有各自的变量n
,不会相互影响。
例子: function f1() if (true) console.log(n); //输出 10
console.log(n); // 输出 5
|
④let
声明不存在变量提升
所谓变量提升,就是之前我们在使用var
声明变量时,变量可以放在声明之前使用,只不过使用还没有声明的变量时,其值为undefined
。但是使用let
声明变量时,如果使用放在声明之前则会报错。
⑤const
除了拥有let
的所有优秀特性(不允许重复声明,有用块级作用域)之外,还有一个特性,那就是它是只读的。
"use strict"
sole.log(s); // returns [5, 6, 45 |
我们将一个新数组[1, 2, 3]赋值给变量s时,其实是企图改变变量s内指针的指向,而因为变量s是使用const命令声明的,其指针指向是固定的,不能变动的,所以程序报错。第二次,我们想修改数组中第二项的值,因为修改数组中某一项的值并不改变数组的地址,变量s内所保存的指针依旧指向原来的地址,所以程序可以成功执行。
⑥Object.freeze(保证复合型数据只可读)
|
⑦箭头函数 (Arrow Functions)
例子: 原 const myFunc = function() const myVar = "value"; return myVar;
现 const myFunc = () => "value"
箭头函数可以传参: const doubler = (item) => item * 2; |
⑧为函数的参数设置默认值
function greeting(name = "Anonymous") return "Hello " + name;
console.log(greeting("John")); // 输出 Hello John console.log(greeting()); // 输出 Hello Anonymous |
⑨rest 参数 (Rest Operator)
function howMany(...args) return "You have passed " + args.length + " arguments.";
console.log(howMany(0, 1, 2)); // 传入三个参数 console.log(howMany("string", null, [1, 2, 3], )); // 传入四个参数 |
⑩扩展运算符 (Spread Operator)
扩展运算符其实就是rest参数中的那三个点...,其作用是将数组打散: console.log(...[1, 2, 3]) // 1 2 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 [...document.querySelectorAll(‘div‘)] // [<div>, <div>, <div>] |
求最大值
const arr = [6, 89, 3, 45]; const maximus = Math.max(...arr); // 返回 89 |
? 解构赋值(Destructuring Assignment)
ES5 var voxel = x: 3.6, y: 7.4, z: 6.54 ; var x = voxel.x; // x = 3.6 var y = voxel.y; // y = 7.4 var z = voxel.z; // z = 6.54 ES6 const x, y, z = voxel; // x = 3.6, y = 7.4, z = 6.54 |
? 模板字符串 (Template String)【用反引号( ` )标识】
const person = name: "Zodiac Hasbro", age: 56 ;
//用模板字符串方式书写的字符串,并将其赋给greeting变量 const greeting = `Hello, my name is $person.name! I am $person.age years old.`;
console.log(greeting); // 输出: // Hello, my name is Zodiac Hasbro! // I am 56 years old. |
在上面这段代码中,有三个地方需要我们注意:
1.模板字符串的标识符是反引号(`) 而不是单引号(‘)
2.输出的字符串是多行的,我们在也不需要\n了
3.语法$可以用来获取变量,化简了之前用+来进行字符串拼接的写法
? class语法糖
? 用取值函数和存值函数(getters and setters)来封装对象
延伸:
Typeof用于检测一个变量的类型,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。
示例 console.log(typeof a); //‘undefined‘ console.log(typeof(true)); //‘boolean‘ console.log(typeof ‘123‘); //‘string‘ console.log(typeof 123); //‘number‘ console.log(typeof NaN); //‘number‘ console.log(typeof null); //‘object‘ var obj = new String(); console.log(typeof(obj)); //‘object‘ var fn = function(); console.log(typeof(fn)); //‘function‘ console.log(typeof(class c)); //‘function‘ |
以上是关于es6摘抄自网络的主要内容,如果未能解决你的问题,请参考以下文章