ES-262学习笔记:&运算符的工作原理

一. &的运算逻辑

1. ES-262-3中,11.10一节对&的运算逻辑描述如下:

以expression1 & expression2为例:

1. 计算expression1;
2. 对Result1进行求值;
3. 计算expression2;
4. 对Result3进行求值;
5. 将Result2转换为32位有符号整数;
   a. 将Result2转换为数字;
   b. 如果Result_a是NaN,0,正负无穷大,就返回0;
   c. 计算Result_a的绝对值,然后对绝对值进行下舍入,最后让结果的符号与Result_a一致;
   d. 对Result_c和232进行求模;
   e. 如果Result_d >= 231,就返回Result_d减去232之后的结果;否则,返回Result_d。
6. 将Result4转换为32位有符号整数;(逻辑同上)
7. 对Result5与Result6进行按位与运算;
8. 返回Result7。

(更多…)

ES-262学习笔记:/运算符的工作原理

一. /的运算逻辑

1. ES-262-3中,11.5.2一节对/的描述:

以expression1 / expression2为例:

1. 计算expression1;
2. 对Result1进行求值;
3. 计算expression2;
4. 对Result3进行求值;
5. 将Result2转换为数字;
6. 将Result4转换为数字;
7. 返回Result5除以Result6的结果。

(更多…)

ES-262学习笔记:%运算符的工作原理

这个%运算符实在是有意思:

(1)-10 % 3的结果是-1,而10 % 3的结果则是1,结果的符号竟然始终和左操作数一样;

(2)Number.POSITIVE_INFINITY % 10的结果是NaN,而10 % Number.POSITIVE_INFINITY的结果竟然是10;

。。。

(更多…)

在学习规范的过程中发现:看似熟悉的乘法运算,却也有着鲜为人知的知识点,(如无穷大与0相乘的结果不是0,这彻底颠覆了我以前的认识),它的背后到底藏着多少秘密,今天一探究竟。。。

(更多…)