附录拾遗

作者: F_wind | 来源:发表于2021-02-22 13:56 被阅读0次

《深入理解ES6》阅读随笔

ES6 中一些其他小变化

Number 新方法

整数识别

Number.isInteger 方法接收一个参数,返回一个布尔值为结果,如果参数是整数类型,返回 true,否则返回 false。

console.log(Number.isInteger(10)) // true
console.log(Number.isInteger('10')) // false
console.log(Number.isInteger(10.0)) // true
console.log(Number.isInteger(10.1)) // false
安全数值

JavaScript 中的整数有个安全范围:负 2 的 53 次方到正 2 的 53 次方。如果超过此范围,就会出现计算混乱的情况:

let integer1 = 10;
console.log(integer1) // 10
integer1 = Math.pow(2, 53)
console.log(integer1) // 9007199254740992
integer1++
console.log(integer1) // 9007199254740992 很明显,此处是不对的

因此在可能会超过该安全范围时,最好先预先判断一下数值类型,ES6 提供了新的方法 Number.isSafeInteger 可用于判断整数是否安全,而默认的安全范围也可以通过 Number.MAX_SAFE_INTEGER 来获取到:

let integer1 = Number.MAX_SAFE_INTEGER
console.log(integer1) // 9007199254740991
console.log(Number.isSafeInteger(integer1)) // true
integer1++
console.log(Number.isSafeInteger(integer1)) // false

一些新增的 Math 方法

ES6 新增的定型数组极大的增强 JavaScript 的游戏和图形能力,除此之外,ES6 还新增了一些常用的数学运算方法,以提高密集型应用的执行效率(具体哪些方法此处不再赘述)。

Unicode 标记符

// ES5
const \u0061 = 'test1'
console.log("\u0061")
console.log(\u0061)
// ES6
const \u{62} = 'test2'
console.log("\u{62}")
console.log(\u{62})

__proto__

虽然 ES6 中,现在正式支持了 __proto__ ,但是其目的是为了与已存在的广泛使用 __proto__ 的库作兼容,ES 官方是推荐避免使用 __proto__ 的,其希望开发者可以通过 Object.setPrototypeOf() 和 Object.getPrototypeOf() 的方式对 __proto__ 进行升级替换。

ES2016 展望

ES6 用了 4 年时间整理归纳才发布,相较于 ES5 有了大量的新特性,但是发布周期太长,因此 ES 标准委员会决定缩短它发布的时间,改为以后每年一版,并以年份命名版本,ES6 是 2015 年发布,因此自动获取名 ES2015,而接下来将要发布的将是 ES2016 也就是 ES7(在笔者归纳笔记时早已发布)。因为时间周期更短,因此更新的特性就会少一些,ES2016 将会更新下面一些特性:

幂运算符号

** 运算符的功能与原来 ES5 中的 Math.pow 一致,都用于幂计算。

console.log(5 ** 2) // 25
console.log(Math.pow(5, 2)) // 25

Array.Prototype.includes

用于查找数组中是否包含某项元素,接收两个参数,一个参数是即将搜索元素,第二参数可选,为起始搜索位置:

const aa = [1, 2, 3, NaN, +0]

console.log(aa.includes(2))  // true
console.log(aa.includes(2, 2)) // false,从索引 2 开始往后搜索,因为没有找到
console.log(aa.includes(NaN)) // true
console.log(aa.includes(-0)) // 此处搜索存在问题,-0 和 +0 认为相同

错误校验

在严格模式下,在传参时默认赋值和解构传参均会报异常:

const sayHello1 = (name) => {
    'use strict'
    console.log('My name is ' + name)
}
// 在声明时就会报异常
const sayHello2 = (name = 'Jack') => {
    'use strict'
    console.log('My name is ' + name)
}
// 在声明时就会报异常
const sayHello3 = ({ name }) => {
    'use strict'
    console.log('My name is ' + name)
}
sayHello1('Tom') // My name is Tom
sayHello2() 
sayHello3({ name: 'Tom' }) 

相关文章

  • 附录拾遗

    《深入理解ES6》阅读随笔 ES6 中一些其他小变化 Number 新方法 整数识别 Number.isInteg...

  • 郁达夫《全集补》(1279703)

    郁达夫的这本小册子,满打满算不到五万字,除了题目、注解、附录,正文更是不多了。 作为《郁达夫全集》的拾遗和补充,《...

  • QR码设计(7)之附录

    附录一 附录二 附录三 附录四 附录五 Table:QR Code Log Antilog Table for G...

  • 附录

    附录 附录A 计算机的0和1 附录B 编程的本质 附录C Java编程简史

  • 75号《搞定3》附录读后感

    《搞定3》附录1-7 附录一、未完成事务提示清单 附录二、自然数学公式计划模式 附录三、项目规划提示清单 附录四、...

  • 2018-11-03 73 莫丹阳 亮剑

    《搞定3》附录1-7 附录一、未完成事务提示清单 附录二、自然数学公式计划模式 附录三、项目规划提示清单 附录四、...

  • 灵月灵山人间词话解读(二)

    一般人间词话书都会多增加删稿、附录、拾遗,不过老王一开始成体系发布的只有六十四则,我解读这一部分。六十四则是老王精...

  • 拾遗神兽目录

    拾遗神兽(番外篇)黑猫 拾遗神兽(1)水晶心的梦 拾遗神兽(2)新宠 拾遗神兽(3)初次交锋猫大爷 拾遗神兽(4)...

  • 每一次观察都是开始----共读萨提亚家庭治疗模式之二十五附录一二

    今天学习萨提亚家庭治疗模式附录一(下)我与谁共欢乐和附录二。 附录一继续探讨我与谁共欢乐,附录二举例讲解...

  • 附录

    附录A C语言中的操作符总表 附录B C99 VS C89 附录C C89 VS K&R C 附录D 标准库函数 ...

网友评论

    本文标题:附录拾遗

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