• bigInt; instanceof和typeof


    一、bigInt:

     BigInt是一种新的数据类型,用于当整数值大于Number数据类型所支持的 范围时。这种数据类型允许我们安全地对 大整数 执行算数操作,表示高分辨率的时间戳、

    使用大整数id等等,而不需要使用库去处理大整数。

    Js中的Number类型只能安全地表示(-(2^53 - 1)) 到((2^53-1)),任何超出此范围的整数值都可能失去精度。因此会出现一些安全性的问题。

    如何创建并使用BigInt:

    创建:只需要在数值末尾追加n即可。

    console.log(9999999999999999999999999999n);

    console.log(9999999999999999999999999999);

    另一种创建:BigInt('99999999999999999999999');

    简单使用:

    10n+20n  // ->  30n

    10n-20n // -> -10n

    +10n //  ->typeError

    -10n //  -> -10n

    10n * 20n  // -> 200n

    20n / 10n // -> 2n

    23n % 10n  // -> 3n

    10n ** 3n // -> 1000n

    const a = 10n;

    ++x; // ->  11n;

    --x; //  9n

    console.log(typeof a);  // ->  "bigint"

    由以上示例可以知道+10n会报错,这是因为 + 符号的特殊性,对于所有类型的参数与 +号一起使用时,其实相当于是在与number值做加法;

    如  + new Date() 可以获取当前的时间戳: new Date()会转换为Number;

    因此+ 10n 要把10n转换为number,但是由于这个隐式类型转换可能丢失信息,所以不允许在bigInt和number之间进行转换。所以会报typeerror。

    如下:10 + 10n 也会报typeerror,math.max(2n, 4n)也会报typeerror(max函数要求传入的参数是number)。

    当boolean和bigInt类型相遇时,bigInt的处理方式与number一样,即除了0n,其他bigInt都是ture。

    if(3n) {}  // -> true

    if(0n) {}  // -> false

    二、使用typeof和instanceof来判断数据类型

    1.typeof:

    首先使用typeof判断基础数据类型:

    typeof 1  // 'number'

    typeof '1'  // 'string'

    typeof undefined  // 'undefined'

    typeof true  // 'boolean'

    typeof Symbol() // 'symbol'

    typeof 10n // 'bigInt'

    typeof null // 'object'  

    结论——> 基础数据类型中除了null,其他基础数据类型都可以调用typeof显示正确的类型。

    但对于引用数据类型,除了函数之外,都会显示'object',

    typeof []  // -> 'object'

    typeof {} // -> 'object'

    typeof console.log // 'function'

    因此采用typeof判断对象数据类型是不合适的,采用instanceof会更好,instanceof的原理是基于原型链的查询,只要

    处于原型链中,判断永远为true。

    对于所有基础数据类型,使用instanceof返回的值为false。因此使用instanceof可以很好的去判断基础数据类型。

  • 相关阅读:
    随机生成一份试卷,试卷的种类分为单选、多选、判断三种题型。nodejs6.0 mysql
    git 常用命令
    ECMAScript 继承机制实现
    javascript正则表达式
    利用javascript实现二维数组的筛选
    iframe引入百度地图显示企业位置
    前端开发APP,从HBuilder开始~
    js闭包理解
    Python多线程threading与多线程中join()的用法
    Python中的装饰器
  • 原文地址:https://www.cnblogs.com/kkkwoniu/p/12057316.html
Copyright © 2020-2023  润新知