美文网首页
2022-03-21 重温es6(一)

2022-03-21 重温es6(一)

作者: 祥仔90后 | 来源:发表于2022-03-21 17:31 被阅读0次

每日笔记(掌握的技术做总结,未掌握的详细)

重温es6

1、let和const
  • 不存在变量提升
  • 块级作用域
  • 同作用域,不能重复声明
  • 暂时性死区 TDZ

在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。

const声明一个只读的常量。一旦声明,常量的值就不能改变。如果是一个对象,需要使用Object.freeze方法

顶层对象,浏览器环境指的是window对象,在 Node 指的是global对象

2、变量的解构赋值

这种属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值

解构赋值允许指定默认值。

用途:

  • 交换变量的值 [x, y] = [y, x];
  • 从函数返回多个值
  • 函数参数的定义
  • 提取 JSON 数据
  • 函数参数的默认值
  • 遍历 Map 结构
const map = new Map();
map.set('first', 'hello');
map.set('second', 'world');

for (let [key, value] of map) {
  console.log(key + " is " + value);
}
// first is hello
// second is world
// 获取键名
for (let [key] of map) {
  // ...
}
// 获取键值
for (let [,value] of map) {
  // ...
}
  • 输入模块的指定方法
    加载模块时,往往需要指定输入哪些方法。解构赋值使得输入语句非常清晰。
    const { SourceMapConsumer, SourceNode } = require("source-map");
3、字符串的扩展

模板字符串中嵌入变量,需要将变量名写在${}之中。

let x = 1;
let y = 2;

`${x} + ${y} = ${x + y}`
// "1 + 2 = 3"

`${x} + ${y * 2} = ${x + y * 2}`
// "1 + 4 = 5"

let obj = {x: 1, y: 2};
`${obj.x + obj.y}`
// "3"
//模板字符串之中还能调用函数。

function fn() {
  return "Hello World";
}

`foo ${fn()} bar`
// foo Hello World bar

字符串实用方法

  • includes():返回布尔值,表示是否找到了参数字符串。
  • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
  • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部
  • repeat():方法返回一个新字符串,表示将原字符串重复n次。
  • padStart():引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全
  • padEnd():用于尾部补全
'1'.padStart(10, '0') // "0000000001"
'12'.padStart(10, '0') // "0000000012"
'123456'.padStart(10, '0') // "0000123456"
另一个用途是提示字符串格式。
'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"
  • trimStart():消除字符串头部的空格
  • trimEnd():消除尾部的空格
  • trim():消除头尾的空格
  • matchAll():方法返回一个正则表达式在当前字符串的所有匹配
  • replace():只将第一个替换。
  • replaceAll() :一次性替换所有匹配
  • at():方法接受一个整数作为参数,返回参数指定位置的字符,支持负索引(即倒数的位置)。
const str = 'hello';
str.at(1) // "e"
str.at(-1) // "o"
4、数值

ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。

0b111110111 === 503 // true
0o767 === 503 // true

Number('0b111')  // 7
Number('0o10')  // 8

ES2021,允许 JavaScript 的数值使用下划线(_)作为分隔符。

let budget = 1_000_000_000_000;
budget === 10 ** 12 // true

123_00 === 12_300 // true

12345_00 === 123_4500 // true
12345_00 === 1_234_500 // true

Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infinity。
Number.isNaN()用来检查一个值是否为NaN.
Number.isInteger()用来判断一个数值是否为整数。
Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内

ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。

// ES5的写法
parseInt('12.34') // 12
parseFloat('123.45#') // 123.45

// ES6的写法
Number.parseInt('12.34') // 12
Number.parseFloat('123.45#') // 123.45

Math.trunc方法用于去除一个数的小数部分,返回整数部分。
Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
Math.cbrt()方法用于计算一个数的立方根。
Math.imul方法返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
Math.clz32()方法将参数转为 32 位无符号整数的形式,然后返回这个 32 位值里面有多少个前导 0。
Math.fround方法返回一个数的32位单精度浮点数形式。
Math.hypot方法返回所有参数的平方和的平方根。

5、函数的扩展
  • 参数默认值
  • 参数默认值可以与解构赋值的默认值,结合起来使用。
  • 函数的 length 属性
    指定了默认值以后,函数的length属性,将返回没有指定默认值的参数个数。也就是说,指定了默认值后,length属性将失真。
  • 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
  • 使用“箭头”(=>)定义函数。
    (1)箭头函数没有自己的this对象(详见下文)
    (2)不可以当作构造函数,也就是说,不可以对箭头函数使用new命令,否则会抛出一个错误
    (3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替
    (4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数
6、数组的扩展
  • 扩展运算符(spread)是三个点(...)
    它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。
    由于扩展运算符可以展开数组,所以不再需要apply方法,将数组转为函数的参数了。
// ES5 的写法
function f(x, y, z) {
  // ...
}
var args = [0, 1, 2];
f.apply(null, args);

// ES6的写法
function f(x, y, z) {
  // ...
}
let args = [0, 1, 2];
f(...args);
  • Array.from方法用于将两类对象转为真正的数组
let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};

// ES5的写法
var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']

// ES6的写法
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
  • Array.of()方法用于将一组值,转换为数组。
Array.of(3, 11, 8) // [3,11,8]
Array.of(3) // [3]
Array.of(3).length // 1

相关文章

  • 2022-03-21 重温es6(一)

    每日笔记(掌握的技术做总结,未掌握的详细) 重温es6 1、let和const 不存在变量提升 块级作用域 同作用...

  • 2022-03-21

    2022-03-21

  • 橙子的ScalersTalk第六轮新概念朗读持续力训练Day 1

    练习材料:[Day 2734 2022-03-21] L31-2:A lovable eccentric Dick...

  • 前端

    1,js基础(小红书重要几张),es6语法,css高级课程 2,熟悉vue,微信小程序(官网),重温react(r...

  • 【重温基础】8.字符串

    本文是 重温基础 系列文章的第八篇。今日感受:人在异乡,也不能忘记汤圆。 系列目录: 【复习资料】ES6/ES7/...

  • 【重温基础】11.Map和Set对象

    本文是 重温基础 系列文章的第十一篇。今日感受:注意身体,生病花钱又难受。 系列目录: 【复习资料】ES6/ES7...

  • 睡眠与睡眠周期

    2022-03-21世界睡眠日-你重视它吗? - 简书 (jianshu.com)[https://www.jia...

  • 无声的爱

    2022-03-21 周一 雨 爱的表达方式有多种。有声的,无声的。 我老公总是默无声息的,...

  • 德育排名

    2022-03-21 阴 周一 “宝贝上周的德育排名,班级第一哦!”昨晚宝贝睡觉后,班干部在QQ群里...

  • 【重温基础】17.WebAPI介绍

    本文是 重温基础 系列文章的第十七篇。今日感受:挑战。 系列目录: 【复习资料】ES6/ES7/ES8/ES9资料...

网友评论

      本文标题:2022-03-21 重温es6(一)

      本文链接:https://www.haomeiwen.com/subject/pmbzdrtx.html