【前端基础】(一)Es6新特性
1 Es6
全称为ECMAScript是浏览器脚本语言的规范,而各种我们熟知的js语言则是规范的具体体现。
1.1 Es6新特性
① let与var
- 作用域
<script>
{
var a = 1;
let b = 2;
}
console.log(a)
console.log(b) // b is not defined
</script>
var声明的变量往往可以跨域,let则有严格的作用域
- 声明次数
<script>
var m = 1
var m = 2
let n = 1
let n = 2
console.log(m)
console.log(n) // Identifier 'n' has already been declared
</script>
let只能声明一次而var可以声明多次
- 变量提升
<script>
console.log(x) // undefined
var x = 1
console.log(y) // Cannot access 'y' before initialization
let y = 2
</script>
未经声明的变量使用,var声明的变量会输出为undefined
let则会报错
② const声明常量(只读变量)
<script>
const a = 1
console.log(a)
a = 2 // Assignment to constant variable.
</script>
③ 解构表达式
数组解构
<script>
const arr = [1, 2, 3]
const [a, b, c] = arr
console.log(a, b, c)
</script>
对象解构
<script>
const person = {
name: "jack",
age: 18,
language: ["java", "python", "c"]
}
const {name:mingzi, age, language} = person
console.log(mingzi, age, language) // jack 18 (3) ['java', 'python', 'c']
</script>
④ 字符串扩展
startsWith()
endWith()
includes()
⑤ 字符串模板
使用反引号 `` 可以声明多行字符串
⑥ 字符串插入变量和表达式
在字符串中使用${}可以使用变量和表达式
⑦ 默认参数
在函数参数上赋值,则为空的时候启用该默认值
⑧ 不定参数
function fun(...value) value表示多个参数的数组形参
⑦ 箭头函数
箭头前面的表示参数,后面表示函数体
<script>
let print = (msg) => {console.log(msg)}
print(123)
</script>
函数参数只有一个值可以省略括号,只有一个返回值则可以省略大括号。
<script>
let add = a => ++a
console.log(add(1)) // 2
</script>
箭头函数加对象解构
<script>
const person = {
name: "jack",
age: 18,
language: ["java", "python", "c"]
}
var hello = ({name:mingzi}) => console.log("hello", mingzi)
hello(person) // hello jack
</script>
⑨对象优化
Api方法
Object.keys() 获取对象键
Object.values() 获取对象值
Object.entries() 获取对象键值对
const person = {
name: "jack",
age: 18,
language: ["java", "python", "c"]
}
console.log(Object.keys(person)) // ['name', 'age', 'language']
console.log(Object.values(person)) // ['jack', 18, Array(3)]
console.log(Object.entries(person)) // 0: (2) ['name', 'jack']
// 1: (2) ['age', 18]
// 2: (2) ['language', Array(3)]
- Object.assign()合并对象
<script>
target = {a:1}
source1 = {b:2}
source2 = {c:3}
target = Object.assign(target, source1, source2)
console.log(target) // {a: 1, b: 2, c: 3}
</script>
- 声明对象名的简写
当属性名与变量名一致时,只需要写一个即可
- 对象的函数属性简写
箭头函数尽量不要使用this指针
- 对象的扩展运算符 ...:表示深度拷贝对象,即拷贝对象的全部属性
<script>
let person = {
name: 'jack',
age: 18,
language: ['java', 'python', 'c']
}
let person1 = {...person}
console.log(person1) // {name: 'jack', age: 18, language: Array(3)}
</script>
- 合并对象
let name = {name: 'jack'}
let age = {age: 18}
let person = {...name, ...age}
console.log(person) // {name: 'jack', age: 18}
区别于Object.assign是将其他对象的属性加到第一个参数的对象,这个是合成一个新的对象
⑩ 数组优化
map:可以传入一个函数,以每一个数组元素作为参数返回其处理之后的值
reduce:传入一个函数和一个值作为初始元素值,然后函数的参数分别为上一个元素和当前处理元素
☆filter
<script>
let arr = ['1', '20', '-5', '3']
// arr = arr.map(item => {
// return item * 2
// })
arr = arr.map(item => item * 2)
console.log(arr) // [2, 40, -10, 6]
</script>
let arr = ['1', '20', '-5', '3']
arr = arr.reduce((a, b) => {
return a * 1 + b * 1
}, 100)
console.log(arr) // 119
表示不断将上个元素加到当前元素,最开始元素值为100,故结果为119
<script>
let arr = ['1', '20', '-5', '3']
arr = arr.filter(item => {
if (item == '1')
return false;
return true;
})
console.log(arr)
</script>
表示删除1
1.2 ☆promise异步编排
promise可以封装异步操作,特别重要单独放到下面讲了。
1.3 Es6模块化
模块化
:模块化就是把代码进行拆分,方便反复利用。类似于java中的导包,要使用一个包必须要导包。而JS中没有包的概念,取而代之的是模块。
模块的主要操作包括:
export
:暴露,不仅可以暴露对象,一切js变量都可以导出,比如基本类型变量、函数、数组、对象。
js、css、图像等等静态资源可以直接使用不需要暴露
import
:导入
1.3.1 三种暴露方法
三种暴露方法的结果都是暴露js文件中的对象给其他地方使用。
默认暴露
:直接将一个对象暴露
export default {
...
}
一个js文件中只能有一个export default
暴露出一个对象,直接就可以拿来使用,且在import的时候任意命名
分别暴露
:将多个对象放在一起进行暴露,在import的时候需要使用{}进行导入
整体暴露
:整体(统一)暴露是一个对象这个对象是我们自己需要写的,把所有的需要暴露的变量写到我们的对象当中
【前端基础】(一)Es6新特性的更多相关文章
- 前端学习笔记 --ES6新特性
前言 这篇博客是我在b站进行学习es6课程时的笔记总结与补充. 此处贴出up主的教程视频地址:深入解读ES6系列(全18讲) 1.ES6学习之路 1.1 ES6新特性 1. 变量 2. 函数 3. 数 ...
- 前端知识总结--ES6新特性
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应 ...
- 前端入门21-JavaScript的ES6新特性
声明 本篇内容全部摘自阮一峰的:ECMAScript 6 入门 阮一峰的这本书,我个人觉得写得挺好的,不管是描述方面,还是例子,都讲得挺通俗易懂,每个新特性基本都还会跟 ES5 旧标准做比较,说明为什 ...
- Atitit js版本es5 es6新特性
Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ...
- ES6新特性(函数默认参数,箭头函数)
ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式: 从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...
- 必须掌握的ES6新特性
ES6(ECMAScript2015)的出现,让前端开发者收到一份惊喜,它简洁的新语法.强大的新特性,带给我们更便捷和顺畅的编码体验,赞! 以下是ES6排名前十的最佳特性列表(排名不分先后): 1.D ...
- javascript ES6 新特性之 扩展运算符 三个点 ...
对于 ES6 新特性中的 ... 可以简单的理解为下面一句话就可以了: 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中. 作用类似于 Object.assign() ...
- 34.js----JS 开发者必须知道的十个 ES6 新特性
JS 开发者必须知道的十个 ES6 新特性 这是为忙碌的开发者准备的ES6中最棒的十个特性(无特定顺序): 默认参数 模版表达式 多行字符串 拆包表达式 改进的对象表达式 箭头函数 =&> ...
- Atitit js es5 es6新特性 attilax总结
Atitit js es5 es6新特性 attilax总结 1.1. JavaScript发展时间轴:1 1.2. 以下是ES6排名前十的最佳特性列表(排名不分先后):1 1.3. Es6 支持情况 ...
- ES6新特性概览
本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...
随机推荐
- python基础简记
pyhon 2 兼容 python 3 : 导入__future__包: 一些命名规定:以单划线开头的表示不能直接访问类属性,需要访问接口:以双划线开头的表示类的私有成员:以双划线开头和结尾的表示py ...
- Charles4.5.1抓取HTTPS请求
Charles下载以后发现 抓取http请求是成功的: 抓取https请求是失败的: 按照失败提示设置即可: 1.点击 Help -> SSL Proxying -> install ch ...
- OSIDP-虚拟内存-08
硬件和控制结构 实际内存管理特点 1.一个进程可以在执行过程中换入换出内存,因而在内存中的位置可以不断变化. 2.一个进程可以划分为多个块,这些块位于内存中的地址不需要是连续的. 进程执行的任何时候都 ...
- 【Unity】利用C#反射打印类的字段信息
最近在用protobuf-net序列化功能生成.bytes配置文件时,遇到了需要把.bytes配置文件再另外转成Lua配置文件(Lua配置表内容举例)的需求.Lua配置文件需要记录配置类的各个字段名和 ...
- 在VS中使用Wind数据终端API的经验(一)
因工作需要,使用vs2019来调用Wind金融终端API数据接口.具体步骤按照wind的帮助文档一步步做下来.这里提一下和帮助文档不同的地方. Windows Console APP下,编译项目后出现 ...
- 使用阿里云镜像安装tensorflow
pip --default-timeout=1000 install --index-url https://mirrors.aliyun.com/pypi/simple tensorflow pip ...
- 我亲自整理的Tampermonkey(以下简称tm)v4.13.6136的编辑器按键映射(基于联想笔记本键盘+win10+火狐浏览器企业版)
警告:你可以对该随笔内容进行转载,但必须写明其来源网址,以及其作者是博客园的zqdlly,否则后果自负!不要小看了我,我一定会让你付出你应得的成本. 0. 家喻户晓的 键 原生comment myMe ...
- CUDA基础2
二. 1.指令调度,对于多条指令怎样调度让他们运行更快. 对于有冲突的两条指令,采用寄存器重命名技术. 2.指令重排 乱序执行,为了获取最大的吞吐率. 增大功耗 增加芯片面积. 3.缓存,容量越大 ...
- Spring--AOP通知类型
AOP通知类型 前置通知 通知类中的数据在原始数据的前面 后置通知 通知类中的数据在原始数据的后面 环绕通知 若是只是加一个注解: 我们需要这样做:加一个参数: 若是面对有返回值的方法,又有一点不同之 ...
- 自用nodejs安装笔记
下载Nodejs 进入Nodejs官网https://nodejs.org/zh-cn/ 下载 安装Node.js 检查Nodejs和npm包管理器是否安装成功 用管理员打开cmd控制台 命令行输入n ...