JavaScript数据类型有哪些?如何区分数组和普通对象?null和undefined区别是什么?

1、基本数据类型——值类型(也称为原始值类型或简单数据类型):

  1.Number:数字类型,可以是整数或浮点数。

      2.String:字符串类型,用于表示文本数据。

      3.Boolean:布尔类型,true 或 false。

      4.Null:空,表示空值或非对象值,它是一个特殊的值用来表示尚未定义或无意义的值。

      5.Undefined:未定义,表示变量已声明但未赋值,或者访问不存在的对象属性时返回的值。

      6.Symbol:独一无二的值,常用于标识符,保证在全局环境中不会重复。

2、复杂数据类型——对象类型(也称引用数据类型):

     1.Object:类型是所有对象的基础,包括数组和函数也是对象的一种。

     2.Array:数组类型,有序的元素列表,可以包含任何数据类型。

     3.Function:函数类型,JavaScript 中的函数实际上是对象,它们可以被当作值来存储和传递,并且具有可执行的能力。

PS:

1、如何区分数组和普通对象:

尽管数组是特殊的对象,但typeof操作符并不能区分数组和普通对象,因为它们都返回 “object”所以可以采取以下方式!

    1.Array.isArray() 方法
Array.isArray([]); // 返回 true,说明是数组
Array.isArray({}); // 返回 false,说明不是数组
     2、instanceof 操作符
var arr = [];
arr instanceof Array; // 返回 true,说明是数组
var obj = {};
obj instanceof Array; // 返回 false,说明不是数组
   3、constructor 属性
var arr = [];
arr.constructor === Array; // 返回 true,说明是数组
var obj = {};
obj.constructor === Object; // 返回 true,说明是对象
   4、 Object.prototype.toString.call() 方法
Object.prototype.toString.call([]); // 返回 "[object Array]"
Object.prototype.toString.call({}); // 返回 "[object Object]"

综上所述:实际开发中最常用且可靠的区分数组和对象的方式是使用 Array.isArray()函数。在某些情况下,结合 Object.prototype.toString.call() 也可以作为辅助手段来判断更复杂的类型情况。

2、null和undefined区别:

   1.数据类型不同:typeof null 的结果是 "object",这是 JavaScript 内部的一个历史遗留问题,实际上在设计之初 null 应该有自己的类型,但由于早期的 bug,typeof 返回了 "object"。typeof undefined 的结果是 "undefined",这是 JavaScript 的一个明确的类型。
   2.相等性测试:使用宽松相等运算符(==)时,null和undefined会互相视为相等,即null==undefined为true。使用严格相等运算符(===)时,由于它们的数据类型不同,null!==undefined,也就是说null===undefined为false。
   3.转换规则:在转换为 Number 类型时,null 转换成 0,而 undefined 转换成 NaN(Not-a-Number)。
   4.含义和用途不同:undefined 表示变量未初始化(即没有赋值),或者访问未声明的变量、对象属性不存在时返回的值。它是 JavaScript 中默认的原始值之一,代表变量存在但目前没有任何值。null 表示刻意的空值或空对象引用,它是一个特殊的值,用来表示一个变量应该有值,但当前没有值,或者一个对象的属性应该指向一个对象,但现在是空。程序员通常会主动将一个变量赋值为 null 来表示清空或释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值