ES6 学习笔记(数值)

187 阅读2分钟

0b 或 0B 表示二进制
0o 或 0O 表示八进制

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

严格模式下不许用前缀0,要用完整前缀0b等

(function(){
  console.log(0o11 === 011); // true
})()

(function(){
  'use strict';
  console.log(0o11 === 011); // Uncaught SyntaxError: Octal literals are not allowed in strict mode.
})()

Number

相关polyfill
将一些全局方法逐步迁移到各模块下,如parseInt、parseFloat。

  • Number()
    // 转十进制
    Number('0b111'); // 7
    Number('0o10'); // 8
    // total 19
    Object.getOwnPropertyNames(Number);
    • length
    • name
    • prototype
    • isFinite() 和全局的有所区别,全局的方法会先将非数值转为数值,Number下方法不会
      Number.isFinite(NaN); // false
      Number.isFinite(Infinity); // false
      Number.isFinite(-Infinity); // false
      Number.isFinite('foo'); // false
      Number.isFinite('15'); // false
      Number.isFinite(true); // false
    • isInteger
      // js 中整数和浮点数是同样的存储方法
      Number.isInteger(25); // true
      Number.isInteger(25.0); // true
      Number.isInteger(25.1); // false
    • parseFloat() 和全局的保持一致
    • parseInt() 和全局的保持一致
      Number.parseInt === parseInt; // true
      Number.parseFloat === parseFloat; // true
      Number.parseFloat('123.45#'); // 123.45
    • isNaN() 和全局的有所区别,全局的方法会先将非数值转为数值,Number下方法不会
      Number.isNaN(NaN) // true
      Number.isNaN(15) // false
      Number.isNaN('15') // false
      Number.isNaN(true) // false
      Number.isNaN(9/NaN) // true
      Number.isNaN('true'/0) // true
      Number.isNaN('true'/'true') // true
    • MAX_SAFE_INTEGER 最大整数上限
    • MIN_SAFE_INTEGER 最小整数下限
    • isSafeInteger JS 整数范围-2^53到2^53之间(不含两个端点),判断是否在这个范围内
      Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1; // true
      Number.MIN_SAFE_INTEGER; // -9007199254740991
      Math.pow(2, 53); // 9007199254740992
      9007199254740993;// 9007199254740992
      Number.isSafeInteger('a') // false
      Number.isSafeInteger(null) // false
      Number.isSafeInteger(NaN) // false
      Number.isSafeInteger(Infinity) // false
      Number.isSafeInteger(-Infinity) // false
      Number.isSafeInteger(3) // true
      Number.isSafeInteger(1.2) // false
      Number.isSafeInteger(9007199254740990) // true
      Number.isSafeInteger(9007199254740992) // false
      Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1) // false
      Number.isSafeInteger(Number.MIN_SAFE_INTEGER) // true
      Number.isSafeInteger(Number.MAX_SAFE_INTEGER) // true
      Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1) // false
    • MAX_VALUE
    • MIN_VALUE
    • NaN
    • NEGATIVE_INFINITY
    • POSITIVE_INFINITY
    • EPSILON 表示1与大于1的最小浮点数之间的差,2.220446049250313e-16
      Number.EPSLION === Math.pow(2, -52); // false
      Number.EPSILON.toFixed(20); // "0.00000000000000022204"
      0.1 + 0.2; // 0.30000000000000004
      0.1 + 0.2 - 0.3; // 5.551115123125783e-17
      0.1 + 0.2 === 0.3; // false
Object.getOwnPropertyNames(Number);
  • constructor
  • toExponential
  • toFixed
  • toPrecision
  • toString
  • valueOf
  • toLocaleString

    Math

    相关polyfill
    所有方法都是静态方法,只能在 Math 对象上调用

    // total 55
    Object.getOwnPropertyNames(Math);
    • abs
    • acos
    • acosh
    • asin
    • asinh
    • atan
    • atanh
      -`atan2
    • ceil
    • cbrt
    • expm1
    • clz32
    • cos
    • cosh
    • exp
    • floor
    • fround
    • hypot
    • imul
    • log
    • log1p
    • log2
    • log10
    • max
    • min
    • pow
    • random
    • round
    • sign() 判断一个数是正、负还是0
    • sin
    • sqrt
    • tan
    • tanh
    • trunc() 去除小数部分
    • E
    • LN10
    • LN2
    • LOG10E
    • LOG2E
    • PI
    • SQRT1_2
    • SQRT2
    • sinh
    • clamp
    • DEG_PER_RAD
    • degrees
    • fscale
    • iaddh
    • isubh
    • imulh
    • RAD_PER_DEG
    • radians
    • scale
    • umulh
    • signbit