当前位置: 首页> 科技> 能源 > 4、js数据类型,检测数据类型

4、js数据类型,检测数据类型

时间:2025/7/11 15:25:10来源:https://blog.csdn.net/m0_73560798/article/details/139546255 浏览次数:0次

一、js数据类型

  1. 基本(简单、原始)数据类型:number/string/boolean/undefined/null/symbol/bigint
  2. 引用(复杂)数组类型:object(function,array,date)

1、symbol是什么?有什么作用?使用场景?

symbol是es6新增的基本数据类型,叫做符号。符号实例是唯一的不可变的。

作用:确保对象属性使用唯一标识符,不会发生属性冲突。

  • 使用场景:

(1)作为对象唯一属性名

 确保对象属性名的唯一性,避免命名冲突。

      let gender = Symbol();let people = {};people[gender]='女';console.log(people[gender]);//女

(2)作为对象属性的隐藏标识

利用symbol()给对象定义一些不想对外操作和访问的属性。

因为,symbol()类型定义的对象的key值不能通过object.keys()或者for in来枚举。

      let gender = Symbol();let person = {name: 'cgp',age: 18,[gender]: '女',};for (const key of Object.keys(person)) {console.log(key);//name age}for (let key in person) {console.log(key); //name age}

(3)定义常量

当需要定义的常量很多时,要考虑到常量唯一值的设定。当用symbol来定义常量,后面想要修改常量的值就会抛出错误。

      const PI = Symbol('π');// 由于Symbol的唯一性,我们可以确保PI不会被意外修改// 尝试修改PI的值会抛出错误PI = 3.14; // 这会抛出错误 Uncaught TypeError: Assignment to constant variable.console.log(PI); // 输出: Symbol(π)

2、bigint是什么?有什么作用?使用场景?

bigint用于表示任意精度格式的整数。

作用:

存储比js默认更大的整数,确保数据完整度和计算精度。

  • 使用场景:

当普通的number存储更大的数字时,会出现不精确的情况。用bigint存储更大的整数,确保数字的完整度和精确度。

const big1 = BigInt(1234567890123456789012344563784);const big2 = 12345678992736n;console.log(typeof big1);//bigintconsole.log(big1);//1234567890123456849145940148224nconsole.log(typeof big2);//bigintconst num1 = 124894637849362739274859;console.log(num1);//1.2489463784936274e+23

二、检测数据类型

1、typeof

适用:准确的判断简单数据类型 

特殊的:检测 空数组[] 、{}  、正则 >>object   检测函数>>function

      console.log(typeof 123);//numberconsole.log(typeof 'abcd');//stringconsole.log(typeof true);//booleanconsole.log(typeof a);//undefinedlet b = Symbol();let c = Symbol();console.log(b);//Symbol()console.log(c); //Symbol()     console.log(b==c); //false  let f = Symbol('sym');console.log(f);   //Symbol(sym)console.log(typeof null);//objectlet d = null;console.log(typeof d);//objectconsole.log(d==null)//trueconsole.log(d===null)//trueconsole.log(typeof function () {});//function console.log(typeof []); //object let e = [1,2,3]console.log(typeof e);//objectconsole.log(typeof {});//objectconsole.log(typeof /\d/);//object 正则

2、instanceof

适用:可以准确的判断复杂数据类型(array date ) ,不能检测基本数据类型会全部返回false

原理:判断在对象的原型链中是否能找到该类型的原型

      let arr = [];console.log(arr instanceof Array); // truelet date = new Date();console.log(date instanceof Date); // truelet add = function(){};console.log(add instanceof Function);//true

3、constructor(不推荐)

适用:引用数据类型(不能检测基本数据类型)

原理:利用原型上的prototype.constructor指向实例的构造函数来进行判断

let arr = [];  
console.log(arr.constructor === Array); // true  let date = new Date();  
console.log(date.constructor === Date); // true  let reg = /a/g;  
console.log(reg.constructor === RegExp); // true  let func = function() {};  
console.log(func.constructor === Function); // true  let obj = {};  
console.log(obj.constructor === Object); // true

 4、Object.prototype.toString.call()

适用于:简单、复杂数据类型

let arr = [];console.log(Object.prototype.toString.call(arr)); // [object Array]let date = new Date();console.log(Object.prototype.toString.call(date)); // [object Date]let reg = /a/g;console.log(Object.prototype.toString.call(reg)); // [object RegExp]let func = function () {};console.log(Object.prototype.toString.call(func)); // [object Function]let str = 'hello';console.log(Object.prototype.toString.call(str)); // [object String]

关键字:4、js数据类型,检测数据类型

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: