网站首页 » 前端开发 » JavaScript » 《ES6 标准入门》学习笔记(第二十五章:读懂 ECMAScript 规格)
上一篇:
下一篇:

《ES6 标准入门》学习笔记(第二十五章:读懂 ECMAScript 规格)

《ES6 标准入门》的第二十五章主要内容也不多,但信息量可以却不少。

《ES6 标准入门》学习笔记(第二十五章:读懂 ECMAScript 规格)

上面的脑图只是把书中的向个大标题摘抄下来而已也没有什么很有用的信息,通过本章我们只需要知道一点就可以了,如果要想对 JavaScript 的某些特性不了解,那么就可以到官方查看规格文件。这也是你学习 JavaScript 最基本最全面的资料。http://www.ecma-international.org/。我们不妨来感受一下,就拿上面的相等运算符为例:

首先规格对每一种语法行为的描述都八十万两部分:先是总体的行为描述,然后是实现的算法细节。

相等运算符的总体描述只有一句话:

The comparison x == y,where x and y are values,produces true or false
相等运算符用于比较两个值,返回 true 或 false

下面是细节算法:

  • 1.ReturnIfAbrupt(x).
  • 2.ReturnIfAbrupt(y).
  • 3.if Type(x) is the same as Type(y),then
  • 4.Return the result of performing Strict Equality Comparison x === y.
  • 5.If x is null and y is undefined,return true.
  • 6.If x is undefined and y is null,return true.
  • 7.If Type(x) is Number and Type(y) is String,
  • 8.return the result of the comparison x == ToNumber(y).
  • 9.If Type(x) is String and Type(y) is Number,
  • 10.return the result of the comparison ToNumber(x) == y.
  • 11.If Type(x) is Boolean,return the result of the comparison ToNumber(x) == y.
  • 12.If Type(y) is Boolean,return the result of the comparison x == ToNumber(y).
  • 13.If Type(x) is either String,Number,or Symbol and Type(y) is Object,then
  • 14.return the result of the comparison x == ToPrimitive(y).
  • 15.If Type(x) is Object and Type(y) is either String,Number,or Symbol,then
  • 16return the result of the comparison ToPrimitive(x) == y.
  • 17.Return false.

意思如下:

  • 1.如果 x 不是正常值(比如抛出一个错误),中断执行
  • 2.如果 y 不是正常值,中断执行
  • 3.如果 Type(x) 与 Type(y) 相同,执行严格相等运算 x === y
  • 4.如果 x 是 null,y 是 undefined,返回 true
  • 5.如果 x 是 undefined,y 是 null,返回true
  • 6.如果 Type(x) 是数值,Type(y) 是字符串,返回 x == ToNumber(y) 的结果
  • 7.如果 Type(x) 是字符串,Type(y) 是数值,返回 ToNumber(x) == y 的结果
  • 8.如果 Type(x) 是布尔值,返回 ToNumber(x) == y 的结果
  • 9.如果 Type(y) 是布尔值,返回 x == ToNumber(y) 的结果
  • 10.如果 Type(x) 是字符串或数值或 Symbol 值,Type(y) 是对象,返回 x == Toprimitive(y) 的结果
  • 11.如果 Type(x) 是对象,Type(y) 是字符串或数值或 Symbol 值,返回 Toprimitive(x) == y 的结果
  • 12. 返回 false

看完这个例子之后,你就可以说是已经完全掌握了相等运算符(===)的精髓了。对于 JavaScript 的其它特性你都可以通过官方规格文件来深入学习。

  • 微信扫一扫,赏我

  • 支付宝扫一扫,赏我

声明

原创文章,不经本站同意,不得以任何形式转载,如有不便,请多多包涵!

本文永久链接:http://yunkus.com/es6-primer-notes-part25/

Leave a Reply

Your email address will not be published. Required fields are marked *

评论 END