前端模块化开发--ES6相关知识
时间:2022-07-25
本文章向大家介绍前端模块化开发--ES6相关知识,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、简介
- ES全名:ECMAScript
- ES由ECMA进行标准化的一套规范
- ES涵盖各种环境中JS使用场景,无论是浏览器环境还是类似node.js的非浏览器环境
- ES版本:1、2、3、5、6
- ES6是最新标准,目标是使JS可以编写复杂的大型应用程序,成为企业级开发语言。
二、新特性
1、变量声明 let
使用var关键字,意味着a变量是全局的,打印结果是abc
javascript
function info(bol) {
if (bol) {
var a = 'abc';
console.log(a)
}else{
console.log(a);
}
}
info(true)
使用let关键字,此时就会报错
- ES6之前,声明变量使用var,该关键字声明的变量会在函数最顶部(不在函数内的即在全局作用域的最顶部)
- ES6声明变量使用let,常量使用const,它们声明的变量都属于块级作用域,即在声明的{}中有效
javascript
function info(bol) {
if (bol) {
let a = 'abc';
}else{
console.log(a);
}
console.log(a)
}
info(true)
2、常量声明:const
关键字const声明的常量只能赋值一次
3、模版字符串:
单行字符串拼接:
${}
javascript
let name = 'michong';
console.log(`你好,欢迎${name}`);
4、参数默认值:
ES6为函数参数提供了默认值
javascript
function getAge(age = 24) {
console.log(age);
}
getAge();
5、箭头函数
箭头代替函数,简化函数定义,箭头函数最直观的三个特点。
- 不需要function关键字来创建函数
- 省略return关键字
- 继承当前上下文的 this 关键字
javascript
getName = (name) => {
console.log(name);
}
getName('米虫');
6、对象初始化简写
ES5我们对于对象都是以键值对的形式书写,是有可能出现键值对重名的
javascript
People = (name, age) => {
return {
name,
age
}
}
console.log(People('米虫',24))
==返回值==
{ name: '米虫', age: 24 }
7、解构
数组和对象是JS中最常用也是最重要表示形式。为了简化提取信息,ES6新增了解构,这是将一个数据结构分解为更小的部分的过程
javascript
//对象
People = (name, age) => {
return {
name,
age
}
}
let {name,age} = People('米虫',24)
console.log(`姓名:${name}======年龄:${age}`)
//数组
let nums = [1,2];
let [one,second] = nums;
console.log(one+second)
8、Spread Operator
javascript
//数组
const color = ['red', 'yellow']
const colorful = [...color, 'green', 'pink']
console.log(colorful) //[red, yellow, green, pink]
//对象
const alp = { fist: 'a', second: 'b'}
const alphabets = { ...alp, third: 'c' }
console.log(alphabets) //{ "fist": "a", "second": "b", "third": "c"
9、NodeJS对ES6支持
- 1)在项目根目录添加.babelrc文件,配置es2015插件
{
"presets": ["es2015"]
}
注:
es2015 === es6
es2016 === es7
es2017 === es8
- 2)安装es2015插件 运行安装命令
cnpm install babel-preset-es2015 --save-dev
babel-preset-es2015: 可以将es2015即es6的js代码编译为es5
- 3)全局安装命令行工具
shell
cnpm install babel-cli -g
- 4)使用 babel-node js文件名
10、Import和Export(Node中不支持这个,所有参考上面第九条的内容)
ES6中的新语法,类似于exports和require,可以实现函数跨文件使用
test.js
javascript
//对象
let People = function(name, age){
return {
name,
age
}
}
//导出模块
export{People}
test2.js
javascript
import {People} from './test'
let {name,age} = People('米虫',24)
console.log(`姓名:${name}======年龄:${age}`)
11、Promise 对象(异步处理,Ajax等)
Promise
是异步编程的一种解决方案,避免了传统的回调函数的层层嵌套,也就是常说的“回调地狱”。
Promise
一旦新建就会立即执行,无法中途取消。
javascript
let promise = new Promise(function (resolve, reject) {
// 异步操作成功
if (true) {
resolve('执行成功');
} else {
reject('执行失败');
}
});
//可以获取上面异步操作结果得到数据,并打印出来
promise.then(function (value) {
//成功的
console.log(value);
}).catch(function (error) {
//失败的
console.log(error);
});
补充 async
await
Async/await建立于Promise之上,很多人认为的最高境界,就是根本不用关心它是不是异步。async await就是异步操作的终极解决方案。
javascript
getJSON = () => {
return new Promise((reslove, rejcet) => {
setTimeout(() => {
reslove('success')
}, 2000);
});
}
//使用promise
let makeRequest2 = () => {
getJSON().then(data => {
console.log(data);
return 'done';
});
//先打印出来
console.log('成功');
}
//使用async
let makeRequest = async () => {
//先等待promise中的resolve()方法执行完成之后才会接着执行下面的语句
console.log(await getJSON());
//等待上一步执行完成之后才会执行
console.log('成功');
return 'done';
}
console.log(makeRequest2());
- 使用sklearn进行数据挖掘
- 批量转换分区表为普通表(r2笔记92天)
- 使用sklearn做特征工程
- 【专业技术】CSS作用及用法
- 生产环境sql语句调优实战第六篇(r2笔记91天)
- 关于分区表的move操作(r2笔记90天)
- 简单分析oracle的数据存储(r2笔记89天)
- 机器学习线性分类算法:感知器原理
- 通过shell脚本来查看Undo中资源消耗高的sql(r2笔记88天)
- 关于分页查询的优化思路(r3笔记第7天)
- 用机器学习方法对影评与观影者情感判定
- 关于查看文件的几个小命令(r3笔记第6天)
- 关于纠结的recycle pool的设置(r3笔记第5天)
- 融会贯通学习trigger(r2笔记第4天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【014期】JavaSE面试题(十四):基本IO流
- 微信小程序开发实战(24):选择图像
- 反 996 有理:催程序员交代码,写不出好软件
- 一千个不用 Null 的理由!
- WebAssembly 是 Deno 的好搭档
- Chrome开发者工具的11个高级使用技巧
- 怒爬某破Hub站资源,简单4步撸个鉴黄平台!
- 审阅“史上”最烂的代码
- BeanUtils 是用 Spring 的还是 Apache 的好?
- 一看就会的mysql索引优化(真实案例)
- 【015期】JavaSE面试题(十五):网络IO流
- 算法篇:二分查找基础篇
- 算法篇:双指针之接雨水
- 因用了Insert into select语句,美女同事被开除了!
- 【原创】Java并发编程系列33 | 深入理解线程池(上)