javascript数据类型有哪些_原始类型和引用类型有何不同?
发布时间 - 2026-01-10 00:00:00 点击率:次JavaScript数据类型分原始类型和引用类型:原始类型共7种(string、number、boolean、null、undefined、symbol、bigint),按值传递;引用类型如Object、Array等,变量存储内存地址,按引用传递。
JavaScript 数据类型分两类:原始类型(primitive)和引用类型(object)。区别不在“是不是对象”,而在值的存储方式和赋值/比较行为——原始类型按值传递,引用类型按内存地址传递。
原始类型有哪些?注意 null 和 undefined 的特殊性
共 7 种原始类型:string、number、boolean、null、undefined、symbol、bigint。
-
typeof null返回"object",这是历史遗留 bug,但null本质是原始类型 -
undefined是未赋值或未声明变量的默认值;null是开发者显式赋的“空值” -
Symbol()每次调用都生成唯一值,常用于对象属性名防冲突 -
BigInt用后缀n表示,如123n,不能和number混算(123n + 1报错)
引用类型有哪些?Array、Function、Date 都是 Object 的实例
所有非原始类型的值都是引用类型,底层都继承自 Object。常见包括:
-
Object、Array、Function -
Date、RegExp、Error -
Map、Set、WeakMap、WeakSet -
Promise、Proxy、Reflect
它们共性是:变量存储的是指向堆内存中实际数据的引用(指针),不是数据本身。
赋值和比较时行为差异最直观:看 === 和修改影响
原始类型比较值,引用类型比较地址——哪怕内容一模一样,两个 {} 也不相等。
let a = 42;
let b = a;
b = 99;
console.log(a); // 42 —— 原始类型赋值是拷贝值
let x = { name: "Alice" };
let y = x; // y 和 x 指向同一块内存
y.name = "Bob";
console.log(x.name); // "Bob" —— 修改 y 影响了 x
console.log({} === {}); // false
console.log([] === []); // false
console.log(/a/ === /a/); // false
- 想深拷贝对象,不能只用
JSON.parse(JSON.stringify(obj)),它会丢掉function、u、
ndefinedSymbol、循环引用 -
Object.is(a, b)比===更严格,能区分+0和-0,且Object.is(NaN, NaN)返回true
检测类型别只信 typeof:用 instanceof 或 Object.prototype.toString.call()
typeof 对大部分引用类型都返回 "object",无法区分 Array、Date、null 等。
console.log(typeof []); // "object" console.log(typeof null); // "object" console.log(typeof new Date()); // "object" // 更可靠的方式: console.log(Object.prototype.toString.call([])); // "[object Array]" console.log(Object.prototype.toString.call(null)); // "[object Null]" console.log(Object.prototype.toString.call(undefined)); // "[object Undefined]" // 或用 instanceof(注意跨 iframe 会失效) [] instanceof Array; // true
-
Array.isArray()是检测数组的推荐方式,比instanceof更健壮 -
typeof只对函数准确返回"function",其他引用类型都不可靠
原始 vs 引用的核心不是“能不能改变”,而是“变量里存的是什么”。一个 const obj = {} 不可重新赋值,但 obj.prop = 1 完全合法——因为 const 锁的是绑定,不是对象内容。这点最容易被忽略。
# javascript
# java
# js
# json
# proxy
# 区别
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用腾讯建站主机快速创建免费网站?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
再谈Python中的字符串与字符编码(推荐)
公司门户网站制作流程,华为官网怎么做?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何在阿里云服务器自主搭建网站?
如何用低价快速搭建高质量网站?
如何快速搭建高效可靠的建站解决方案?
香港服务器WordPress建站指南:SEO优化与高效部署策略
使用Dockerfile构建java web环境
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
实现点击下箭头变上箭头来回切换的两种方法【推荐】
浅析上传头像示例及其注意事项
大同网页,大同瑞慈医院官网?
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Linux安全能力提升路径_长期防护思维说明【指导】
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
C语言设计一个闪闪的圣诞树
,网页ppt怎么弄成自己的ppt?
python中快速进行多个字符替换的方法小结
常州企业网站制作公司,全国继续教育网怎么登录?
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
如何自定义建站之星模板颜色并下载新样式?
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
无锡营销型网站制作公司,无锡网选车牌流程?
大连 网站制作,大连天途有线官网?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
网站制作报价单模板图片,小松挖机官方网站报价?
怎么用AI帮你设计一套个性化的手机App图标?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
js代码实现下拉菜单【推荐】
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
详解Huffman编码算法之Java实现
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
Android滚轮选择时间控件使用详解
如何用AWS免费套餐快速搭建高效网站?
如何用y主机助手快速搭建网站?
PHP 500报错的快速解决方法
如何生成腾讯云建站专用兑换码?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
晋江文学城电脑版官网 晋江文学城网页版直接进入


ndefined