es6摘抄自网络

Posted pengjohn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6摘抄自网络相关的知识,希望对你有一定的参考价值。

ES6

letconst只能定义变量一次,避免重复定义带来的问题;

letconst会被锁定在声明的代码块内,成为暂时性死区(Temporal Dead Zone);

letconst两个代码块中拥有各自的变量n,不会相互影响。

例子:

function f1()

    let n = 5;

    if (true)

      let n = 10;

      console.log(n); //输出 10

   

    console.log(n); // 输出 5                                   

 

let声明不存在变量提升

所谓变量提升,就是之前我们在使用var声明变量时,变量可以放在声明之前使用,只不过使用还没有声明的变量时,其值为undefined。但是使用let声明变量时,如果使用放在声明之前则会报错。

const除了拥有let的所有优秀特性(不允许重复声明,有用块级作用域)之外,还有一个特性,那就是它是只读的。

  "use strict";
  const s = [5, 6, 7];
  s = [1, 2, 3]; // 报错
  s[2] = 45; // 正常工作
  console.log(s); // returns [5, 6, 45]

sole.log(s); // returns [5, 6, 45

我们将一个新数组[1, 2, 3]赋值给变量s时,其实是企图改变变量s内指针的指向,而因为变量s是使用const命令声明的,其指针指向是固定的,不能变动的,所以程序报错。第二次,我们想修改数组中第二项的值,因为修改数组中某一项的值并不改变数组的地址,变量s内所保存的指针依旧指向原来的地址,所以程序可以成功执行。

⑥Object.freeze(保证复合型数据只可读)

  let person = 
    name:"XiaoMing",
    review:"yes"
  ;
  Object.freeze(person);
  person.review = "no"; //这条命令将会被忽略,因为此时person对象是只读的
  person.newProp = "age"; // 这条命令也将会被忽略
  console.log(obj); 
  //  name: "XiaoMing", review:"yes"

⑦箭头函数 (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摘抄自网络的主要内容,如果未能解决你的问题,请参考以下文章

app测试专项(摘抄自网络)

摘记:摘抄自网络40个Java多线程问题总结

BeanShell用法汇总(部分摘抄至网络)

BeanShell用法汇总(部分摘抄至网络)

格式金钱摘抄与网络,记录

VXLAN简介(摘抄)