ES6语法必知必会

求一键三连

希望大家看完觉得有用的话点赞、关注和收藏,感谢!!!

前言

主要是参考阮一峰的es6语法书,做记录,这里面的内容都是必须知道,要掌握的,在后续代码中十分有用的,es6之后它的语法更像java了,该有的类和set,map等数据结构都有了。

let变量

1.暂时性死区
在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。这样的设计是为了让大家养成良好的编程习惯,变量一定要在声明之后使用,否则就报错。主要是为了减少运行时错误,防止在变量声明前就使用这个变量

块级作用域。
特别注意{ }就是一个块级作用域,ES6 的块级作用域必须有大括号,如果没有大括号,JavaScript 引擎就认为不存在块级作用域。
let不允许在相同作用域内,重复声明同一个变量。每一层的变量只在自己的块级作用域内有效。而es5则是采用就近原则,谁在最底部(从上到下解析),就用谁的,存在变量提升的问题。
考虑到环境导致的行为差异太大,应该避免在块级作用域内声明函数
就是下面这种,就是直接声明的(而函数表达式则是let f=function())

function f() {
    
    
    return a;
  }

const

const声明一个只读的常量。一旦声明,常量的值就不能改变
只声明不赋值,就会报错。

import

import MDN

跟Java里导入类或者包一样 例如:import Util.*

彻底理解JavaScript ES6中的import和export

最重要的一点使用:
在实际开发中,我们并不需要导出所有的接口。例如在vue项目中,使用某个组件库中的某个组件,我们只需要引入这一个组件,不必要引入所有组件

import 导出的是整个文件对象,那么我们直接在 import 语句中,对这个对象进行解构,就可以获得其中某一部分接口:

main.js :
import {
    
    f1,b} from "./m1.js"

export:

一个js文件,可以理解成一个模块,这个模块可以被任意其他的模块引入,引入的结果,就是对这个模块进行执行后,所持有的对象。那么随之而来就有一个问题,文件模块被引入后,所有的东西,都是在自己的作用域中,主动发起引入行为的那个文件,虽然获取到了被引入的对象,但是并不能访问作用域里的东西,所以提供了export,来决定一个模块对外暴露什么东西。

export的作用,就是用于从模块中导出函数、对象或原始值,以便其他程序可以通过 import 语句使用它们.

在vue源码中你也可以看到它的作用:
在这里插入图片描述
在vue源码的最后,你可以看到它export所有可以使用的函数,里面就包括我们的createAPP,最开始的这个构造函数

注意点

当时export default(默认输出)时,对应的import语句不需要使用大括号 ,可以取任意名字
本质上,export default就是输出一个叫做default的变量或方法,然后系统允许你为它取任意名字。
在这里插入图片描述

模板字符串

阮一峰 模板字符串

箭头函数

更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。,没有prototype属性。没有this
MDN箭头函数
阮一峰 箭头函数
在这里插入图片描述

对于普通函数来说,内部的this指向函数运行时所在的对象,但是这一点对箭头函数不成立。**它没有自己的this对象,内部的this就是定义时上层作用域中的this。**也就是说,箭头函数内部的this指向是固定的,相比之下,普通函数的this指向是可变的。

使用:
=>前的是传入的参数(少了function)
=>后是返回的数据(省略了return)

var f = v => v;

// 等同于
var f = function (v) {
    
    
  return v;
};

()里面放的是传入参数
在这里插入图片描述
在这里插入图片描述

箭头函数返回一个对象则必须加()

记住加了( )都表示是一个对象
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

for of循环(区别for in)

在这里插入图片描述
只返回有数字索引的属性
for...of循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性


proxy

代理器
它主要用于改变某些操作的默认行为
proxy在目标对象的外层搭建了一层拦截,外界对目标对象的某些操作(后文会说明,有哪些操作可以拦截),必须通过这层拦截。
get方法,拦截属性的读取操作。
阮一峰es6要点总结——Proxy

Proxy的典型应用场景
(表单提交的时候做数据校验,例如年龄是不是满足条件,数据类型是不是满足要求等等,这场场景非常适合使用Proxy。)

apply

在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。
call() 方法分别接受参数。

apply() 方法接受数组形式的参数。
JS中的call、apply、bind方法详解

apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;
apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
apply 、 call 、bind 三者都可以利用后续参数传参;
bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

展开/扩展运算符: …(很常用)

就很好理解,就像语文里面,不一个个手写里面的内容了,用省略号代替一下。
…expression:展开的是expression里面具体的一个个的值
在这里插入图片描述

结构 (很常用)

提供了一种更加便利的数据访问方式,通过自己解构,这样可以重新命名数据,在页面内拿更方便。

const point=[0,1]
const {
    
    x,y}=point;
x;  //0
y;  //1
//从数组中取值
const arr=[1,2,3,4];
const [a,,,b]=arr;// 1,4

BigInt(了解)

可以表示任意进度的整数,尤其是大于2^53-1的整数

指数操作符

在这里插入图片描述

async+await 异步调用(重要)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Tommy__li/article/details/127910394