ES6随笔

JavaScript三大体系:ECMAScript,bom,dom

                  --------------------------------(ES6指的是ES2015后续的版本)

1.es6中的暂时性死区

  • let/const是使用区块作用域;var是使用函数作用域
  • 在let/const声明之前就访问对应的变量和常量,会抛出ReferenceError错误;但是在var声明之前就访问对应的变量,则会得到undefined

 理解:

  1. let所声明的变量,只在let命令所在的代码块内有效。在代码块之外调用就会报错。
  2. 在代码内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”。
  3. const声明常量,变量指向的内存地址所保存的数据不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但是对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变,就完全不能控制了。

2.解构:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。

从数组中提取值,按照对应位置,对变量赋值。

3.模板字符串:是增强版的字符串,用反引号标识。可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

4.函数的扩展:

  • 函数参数的默认值

理解:

  1. ES6允许为函数的参数设置默认值,即直接写在参数定义的后面。
  2. 好处:阅读代码的人,可以立即意识到哪些参数是可以省略的,在对外接口中,彻底拿掉这个参数,也不会导致以前的代码无法运行。
  3. 参数默认值可以与解构赋值的默认值,结合起来使用

    function go2({x=1,y=10}){
    console.log('x:'+x);
    console.log('y:'+y);
    }

    go2({x:100,y:200});

  4. 参数默认值的位置:函数的尾参数;
  • 箭头函数

  ES6允许使用"箭头"( => )定义函数

  1. 箭头函数不需要参数或者需要多个参数,就使用一个圆括号代表参数部分 const f1=()=>5;
  2. 如此理解: var f = v => v;  等同于  var f = function(v){return v;};
  3. 如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回 

    const f4=()=>{
      let [i,j]=[1,4];
      return i+j;
    };

  4. 大括号被解释为代码块,如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。let const f5=()=>({name:'郝敏一',age:27});
  • rest参数
  1. 用于获取函数的多余参数,rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
  2. rest参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。
  3. 函数的length属性,不包括rest参数。
  • ES6的原型链
  1. 构造函数和原型prototype

    (1)原型prototype:每个构造函数都有一个prototype属性,指向一个对象。prototype的本质也是一个JavaScript对象,称为原型对象,这个对象的所有属性和方法都会被构造函数所拥有。因此,可以将一些方法直接定义在prototype上,这样所有对象实例就可以共享这些方法;

    (2)作用:原型prototype的作用是共享方法、节约内存;

  2. 对象原型__proto__

    对象自身的一种属性,它指向原型对象prototype,创建的对象实例里面有__proto__,它指向构造函数的prototype,因此可以使用prototype里面的方法。

  3. constructor属性

    原型对象prototype和对象原型__proto__里面都有一个constructor属性,constructor可以指回构造函数本身。

  4.原型链

    成员查找机制 : 实例对象->构造函数原型对象->Object原型对象

 

 

 

 

 

 

posted @ 2021-02-06 08:15  zhouhl  阅读(38)  评论(0)    收藏  举报