ES6随笔--各数据类型的扩展(2)--数值

ES6随笔--各数据类型的扩展(2)--数值

二进制和八进制表示

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

这两种字符串转换成十进制数值,使用Number()方法;

Number(‘0b111‘)  // 7

Number.isFinite(), Number.isNaN();

Number.isFinite()的参数如果不是数值,一律返回false, Infinity/-Infinity/NaN都返回false

Number.isNaN()对不是NaN的参数一律返回false;

这两个方法与传统全局方法相比没有进行数值转换,对于非数值参数一律返回false

Number.parseInt(), Number.parseFloat();

与原来的全局方法行为相同,这样做是为了减少全局方法,逐步模块化;

Number.isInteger()

判断一个参数是否为整数,如果数据要求精度较高,可能会不准确;

Number.EPSILON

表示1与大于1的最小浮点数之间的差值(常量);实际上是JS能够表示的最小精度;

Number.EPSILON === Math.pow(2, -52)

可以用来设置“可以接受的误差范围”。

安全整数和Number.isSafeInteger()

JS能够精确表示的整数范围在Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER之间;这个范围内是“安全的”,否则就会“不安全”,检验方法为Number.isSafeInteger()

但是对于一个运算,则要对运算数和结果都检验,全部在安全整数范围内结果才是可信的。

Math对象的扩展

1) Math.trunc() 去除小数部分,保留整数部分,相当于

Math.trunc = Math.trunc || function(x) {
  return x < 0 ? Math.ceil(x) : Math.floor(x);
};

非数值会先转换为数值,不能截取数值或空值,返回NaN;

2) Math.sign():确认一个参数是正数、负数还是零;非数值会先转换为数值;无法转换则返回NaN;相当于

Math.sign = Math.sign || function(x) {
  x = +x; // convert to a number
  if (x === 0 || isNaN(x)) {
    return x;
  }
  return x > 0 ? 1 : -1;
};

返回值包括+1,-1, 0, -0, NaN;

3) Nath.cbrt(): 计算一个数的立方根;相当于

Math.cbrt = Math.cbrt || function(x) {
  var y = Math.pow(Math.abs(x), 1/3);
  return x < 0 ? -y : y;
};

4) Math.clz32(),返回一个数的32位无符号整数形式有多少前导零;对空值或其他类型值会先转换为数值再计算;

5) Math.imul(),返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32位的带符号整数;对于那些很大的数的乘法,低位数值往往都是不精确的,Math.imul方法可以返回正确的低位数值.

Math.imul(0x7fffffff, 0x7fffffff) // 1

6) Math.fround(), 返回一个数的32位单精度浮点数形式。

7) Math.hypot(), 返回所有参数的平方和的平方根。

4个对数方法:

8) Math.expm1(), 返回Math.exp(x)-1

9) Math.log1p(), 返回1+x的自然对数;

10) Math.log10(), 返回以10为底的x的对数,如果x小于0,则返回NaN;

11) Math.log2(), 返回以2为底的x的对数,如果x小于0,则返回NaN;

6个双曲函数方法;

指数运算符(**):对于特别大的运算结果,与Math.pow()结果会有细微差异;与等号连用,作为新的赋值符:

a **= 2  // a = a ** 2; a = a * a;
b **= 3  // b = b ** 3; b = b * b * b;


ES6随笔--各数据类型的扩展(2)--数值

原文地址:https://www.cnblogs.com/muTing/p/9191604.html

时间: 2024-10-08 22:10:05

ES6随笔--各数据类型的扩展(2)--数值的相关文章

ES6随笔--各数据类型的扩展(1) --字符串和正则

ES6随笔--基本数据类型的扩展 字符串 Unicode表示法 \uxxxx表示的Unicode如果码数超过了0xFFFF的范围,只要放进大括号内就能识别: codePointAt() 用codePointAt()可以准确识别码数超出0xFFFF范围的Unicode字符: for...of循环能够正确识别32位的UTF-16字符: String.fromCodePoint() 与codePointAt()作用刚好相反:根据传入的Unicede码数返回对应的字符: 遍历 for...of循环可以循

ES6随笔--各数据类型的扩展(3)--函数

ES6随笔--各数据类型的扩展(3)--函数 1. 函数参数的默认值 可以在函数参数中指定默认值,函数内不能再用let或const声明: 使用参数默认值时,不能出现同名参数: 参数默认值惰性求值,每次调用函数会重新计算参数默认值表达式: let x = 99; function foo(p = x + 1) { console.log(p); } foo() // 100 x = 100; foo() // 101 可以与解构赋值默认值结合使用: function ({x, y = 5} = {

es6之各种数据类型的扩展

一. 字符串的扩展 为字符串添加了Iterator,可以被for...of遍历 includes.startsWith.endsWith都会返回布尔值,且支持第二个参数(开始搜索的位置),endsWith针对前n个字符,其他两个都是从第n个到结束 repeat返回一个新字符串,参数为重复的次数(小数会向下取整,负数或Infnity会报错,0到-1等同于0,字符串会转为数字) padStart.padEnd在头部或尾部补全,第一个参数是字符串最小长度,第二个参数是用来补齐的字符串 模板字符串`${

初入ES6随笔

初入ES6随笔 var c = a => console.log(a) let a1 = 1; //只在块儿状作用域生效的变量声明 const a2 = 1; //常量声明,值不可改变,快儿状作用域 解构赋值语法 let [a3, b3, c3] = [1, 2, 3]; //数组解构赋值 let [a4 = 0, ...b4] = [1, 2, 3, 4] //数组解构赋值 a4 = 1 b4 = [2,3,4] 允许默认值; let {a5, b5} = {a5: "1",

ES6关于Unicode的相关扩展

前面的话 JS中的字符串类型是由引号括起来的一组由16位Unicode字符组成的字符序列.在过去,16位足以包含任何字符,直到Unicode引入了扩展字符集,编码规则不得不进行变更.本文将详细介绍ES6关于Unicode的相关扩展 概述 Unicode的目标是为世界上每一个字符提供唯一标识符,唯一标识符称为码位或码点(code point).而这些码位是用于表示字符的,又称为字符编码(character encode) 在ES6之前, JS 的字符串以 16 位字符编码(UTF-16)为基础.每

ES6随笔--声明变量

ES6随笔--声明变量 let命令 所声明的变量只在其所处代码块内有效: {let a = 10}; alert(a); // ReferenceError: a is not defined {let a = 10; alert(a);} //10 在for循环中,for关键字后面跟的设置循环变量语句和后面循环体内部语句是父作用域和子作用域的关系: var arr = []; for (let i = 0; i < 5; i++) { arr[i] = function () { let i

ES6之路第四篇:数值的扩展

二进制和八进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. 1 0b111110111 === 503 // true 2 0o767 === 503 // true Number.isFinite(),Number.isNaN() ES6 在Number对象上,新提供了Number.isFinite()和Number.isNaN()两个方法. Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infini

ES6学习笔记(二)——字符串扩展

相信很多人也和我一样,不喜欢这样循规蹈矩的逐条去学习语法,很枯燥乏味.主要是这样学完一遍之后,没过一段时间就忘到九霄云外了.不如实际用到的时候研究它记得牢靠,所以我就整理成笔记,加深记忆的同时便于复习查看. 在这样不断的学习过程中,也提高了自己的总结能力:) 1.字符串的遍历器接口 ES5,数组和对象可以进行遍历,使用for() 和 for...in,还有jq中的each()方法进行遍历. ES6为我们提供了字符串遍历器  for...of 循环遍历 优点:可以识别大于0xFFFF的码点,传统的

java基础随笔 字符数据类型char的单引号

public class Love{ public static void main(String[] args){ System.out.println('*'+'\t'+'*'); System.out.println("*"+"\t"+"*") } } 运行结果   第一行为  93 第二行为  *        * 原因 第一行中'\t' 单引号  识别为字符数据类型char,char类型是可以运算的,在第一行中+做了运算符. 第二行&q