ES6重点——关键字,箭头函数,函数参数,迭代器

简介: 不能同时声明同一变量,不可以重复声明属于块级作用域(局部变量)不存在变量提升必须先声明该变量后面才能使用变量提升在变量创建之前使用,var存在不影响作用域链作用域链:就是代码块内有代码块,上级代码块中 的局部变量下级可用

@TOC

let关键字

  1. 不能同时声明同一变量,不可以重复声明
  2. 属于块级作用域(局部变量)
  3. 不存在变量提升
必须先声明该变量后面才能使用

#### 变量提升

在变量创建之前使用,var存在

  1. 不影响作用域链

作用域链:就是代码块内有代码块,上级代码块中 的局部变量下级可用

{ let p = "大哥"; 
    function fn(){ 
        console.log(p); // 这里是可以使用的 
  }
          fn();
} 

以后声明变量使用 let 就对了

const关键字

  1. 声明必须赋初始值
  2. 不允许重复声明
  3. 值不允许修改
  4. 块级作用域(局部变量)

应用

声明对象类型使用 const,非对象类型声明选择 let;


变量和对象的解构赋值

解构赋值:

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

应用

频繁使用对象方法、数组元素,就可以使用解构赋值形式;


模板字符串

模板字符串(template string)是增强版的字符串,用反引号(`)标识,特点:

字符串中可以出现换行符;

可以使用 ${xxx} 形式引用变量;

// 声明字符串的方法:单引号('')、双引号("")、反引号(``) 
// 声明 let string = `我也一个字符串哦!`; 
console.log(string); 
// 1、字符串中可以出现换行符 
let str =
    `<ul>
    <li>一</li> 
    <li>二</li> 
    <li>三</li> 
    <li>四</li> 
    </ul>`;
console.log(str); 
// 2、可以使用 ${xxx} 形式引用变量 
let s = "大哥"; 
let out = `${s}是我最大的榜样!`;

箭头函数

箭头函数多用于匿名函数的定义

注意

  • 如果形参只有一个,则小括号可以省略
  • 函数体如果只有一条语句,则花括号可以省略,函数的返回值为该条语句的执行结果
  • 箭头函数 this 指向声明时所在作用域下 this 的值
  • 箭头函数不能作为构造函数实例化
  • 不能使用 arguments

特性:

  1. 箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值
  2. 不能作为构造实例化对象
  3. 不能使用 arguments 变量

arguments

arguments的东西也是个对象,而且是一个特殊的对象,

它的属性名是按照传入参数的序列来的,

第1个参数的属性名是’0’,第2个参数的属性名是’1’,以此类推,

并且它还有length属性,

存储的是当前传入函数参数的个数,很多时候我们把这种对象叫做类数组对象。

利用arguments实现方法的重载

利用 arguments.callee 实现递归

filter

用于把Array的某些元素过滤掉,然后返回剩下的元素。

和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。

var newArray = arr.filter(arg_function[, this_arg])

函数参数的默认值

ES允许给函数的参数赋初始值;

rest参数

ES6 引入rest参数,用于获取函数的实参,用来代替arguments;

Rest参数和arguments对象的区别

  • rest参数只包括那些没有给出名称的参数,arguments包含所有参数
  • arguments 对象不是真正的数组,而rest 参数是数组实例,可以直接应用sort, map, forEach, pop等方法
  • arguments 对象拥有一些自己额外的功能

迭代器

遍历器(Iterator)就是一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数 据结构只要部署 Iterator 接口,就可以完成遍历操作

ES6 创造了一种新的遍历命令 for...of 循环,
Iterator 接口主要供 for...of 消费;

原生具备 iterator 接口的数据(可用 for of 遍历):

Array;

Arguments;

Set;

Map;

String;

TypedArray;

NodeList;

原理:

  1. 创建一个指针对象,指向当前数据结构的起始位置;
  2. 第一次调用对象的 next 方法,指针自动指向数据结构的第一个成员;
  3. 接下来不断调用 next 方法,指针一直往后移动,直到指向最后一个成员;
  4. 每调用 next 方法返回一个包含 value 和 done 属性的对象;

注:需要自定义遍历数据的时候,要想到迭代器;

// 声明一个数组 
const xiyou = ['唐僧', '孙悟空', '猪八戒', '沙僧']; 

// 使用 for...of 遍历数组 for(let v of xiyou){
console.log(v);
}
let iterator = xiyou[Symbol.iterator](); 
// 调用对象的next方法 
console.log(iterator.next());

// 重新初始化对象,指针也会重新回到最前面 
let iterator1 = xiyou[Symbol.iterator](); 
console.log(iterator1.next());
目录
相关文章
|
3月前
|
算法 Python
Python函数的嵌套调用:深入理解与应用
Python函数的嵌套调用:深入理解与应用
71 1
|
3月前
|
存储 Python 容器
python函数的返回值、嵌套方式以及函数中的变量(一)
python函数的返回值、嵌套方式以及函数中的变量(一)
221 2
|
3月前
|
Python
python函数的返回值、嵌套方式以及函数中的变量(二)
python函数的返回值、嵌套方式以及函数中的变量(二)
232 1
|
3月前
|
机器学习/深度学习 算法 编译器
【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题
【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题
83 0
普通函数中的this指向问题解决方案箭头函数
普通函数中的this指向问题解决方案箭头函数
33 0
|
前端开发 JavaScript API
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(五)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(五)
|
前端开发 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(一)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map
|
前端开发 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(四)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(四)
|
前端开发 JavaScript 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(三)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(三)
|
前端开发 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(二)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(二)