JavaScript4种判断变量类型的方法

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>判断数据类型的四种方法</title>
  </head>
  <body>
    <script>
      // 判断数据类型的四种方法
      const tempStr = "test";
      const tempStr1 = "222";
      const tempNum = 1;
      const tempNull = null;
      const tempUnd = undefined;
      const tempSym = Symbol(1);
      const tempBigInt = BigInt(647326483767797);
      const tempBoolean = true;
      const tempArr = ["one", "two", "three"];
      const tempObj = { name: "demo" };

      // typeof常用于判断基本数据类型,
      // 对于引用数据类型除了function返回function,其余全部返回object,null也会返回object
      console.log(typeof tempStr);
      console.log(typeof tempNum);
      console.log(typeof tempNull);
      console.log(typeof tempUnd);
      console.log(typeof tempSym);
      console.log(typeof tempBigInt);
      console.log(typeof tempBoolean);
      console.log(typeof tempArr);
      console.log(typeof tempObj);

      // instanceof主要用于区分引用数据类型
      // 检测方法是检测的类型在当前实例的原型链上,不太适合用于简单数据类型的检测
      // 对于简单数据类型中的undefined, null, symbol检测不出来
      console.log(tempStr instanceof Array);
      console.log(tempStr instanceof Object);
      console.log(tempNum instanceof Array);
      console.log(tempNum instanceof Object);
      console.log(tempNull instanceof Array);
      console.log(tempNull instanceof Object);
      console.log(tempUnd instanceof Array);
      console.log(tempUnd instanceof Object);
      console.log(tempSym instanceof Array);
      console.log(tempSym instanceof Object);
      console.log(tempBigInt instanceof Array);
      console.log(tempBigInt instanceof Object);
      console.log(tempBoolean instanceof Array);
      console.log(tempBoolean instanceof Object);
      console.log(tempArr instanceof Array);
      console.log(tempArr instanceof Object);
      console.log(tempObj instanceof Array);
      console.log(tempObj instanceof Object);

      // Object.prototype.toString.call()适用于所有类型的判断检测
      // 检测方法是Object.prototype.toString.call(数据) 返回的是该数据类型的字符串
      console.log(Object.prototype.toString.call(tempStr));
      console.log(Object.prototype.toString.call(tempNum));
      console.log(Object.prototype.toString.call(tempNull));
      console.log(Object.prototype.toString.call(tempUnd));
      console.log(Object.prototype.toString.call(tempSym));
      console.log(Object.prototype.toString.call(tempBigInt));
      console.log(Object.prototype.toString.call(tempBoolean));
      console.log(Object.prototype.toString.call(tempArr));
      console.log(Object.prototype.toString.call(tempObj));

      // constructor用于检测引用数据类型,检测方法是获取实例的构造函数判断和某个类是否相同
      // 如果相同就说明该数据是符合那个数据类型的,这种方法不会把原型链上的其他类也加入进来,避免了原型链的干扰
      console.log(tempStr.constructor === tempStr1.constructor);
      console.log(tempStr.constructor);
      console.log(tempNum.constructor);
      // console.log(tempNull.constructor);
      // console.log(tempUnd.constructor);
      console.log(tempSym.constructor);
      console.log(tempBigInt.constructor);
      console.log(tempBoolean.constructor);
      console.log(tempArr.constructor);
      console.log(tempObj.constructor);
    </script>
  </body>
</html>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值