读<>

2018-07-30  本文已影响0人  JLUiceman

1.<script>元素的六个属性


2.a instanceof B <=> a.proto(一个或若干个proto) === B.prototype


3.typeof null === 'object'

在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null的类型标签也成为了 0,typeof null就错误的返回了"object"


4. 浮点数值计算产生舍入误差的问题

这是使用基于IEEE754数值的浮点计算的通病,ECMAScript并非唯一会有该问题的(原因为10进制小数转化为2进制存储在计算机中受位数限制导致的精度丢失)
延展阅读: IEEE 754 对双精度浮点数的存储规范将 64 bit 分为 3 部分.第1位储存符号,然后11位存储指数,最后剩下52位存储位数。。。所以会不会产生精度误差取决于十进制小数转换为二进制小数后的循环部分的长度能否被52整除


5.数值转换

3个函数: Number(),parseInt(),parseFloat(),其中后两个专门用于把字符串转换为数值
Number()函数的转换规则:


6.String相关

toString()函数的转换规则:


7.前置递增和前置递减操作与执行语句优先级相等


8.对非数值应用一元加或者一元减操作符时,会对该值进行Number()转化(注意与parseInt的转换规则区别)


9.位操作

数值与位数的转换
虽然数值均根据IEEE-754规定的64位格式存储,但位操作符并不直接操作64位的值,而是转换为32位进行操作,其中: 对于有符号的整数,32位中前31位表示具体的值,最后一位用于表示数值的符号(0=>正数,1=>负数),前31位中没有用到的用0填充;负数则使用二进制补码进行存储

关于二进制的补码

  1. 求这个数值绝对值的二进制码(如-18则先求18的二进制码)
  2. 求二进制反码,即将0替换为1,将1替换为0
  3. 得到的二进制反码加1
    在对数值进行位操作时: 64位=>32位=>位操作=>32位=>64
    副作用: NaN及Infinity在进行位操作时会被当做0来处理
上一篇 下一篇

猜你喜欢

热点阅读