当前位置: 首页 > article >正文

JavaScript 数据类型全家福:谁是大哥大,谁是小透明?

有人说JS里万物皆对象有人说JS里类型多得让人头大。今天我们就来盘点一下JavaScript的七种基本数据类型和它们的“爸爸”Object看看它们各自有什么脾气日常相处中又有哪些让人哭笑不得的坑。前言JavaScript的数据类型就像一大家子人。有嗓门大的有闷葫芦的有喜欢装酷的还有整天搞事情的。作为前端开发者不了解它们的性格写代码时就等着被坑吧。先来个数数ES6之前JS有5种基本类型String、Number、Boolean、Null、Undefined。ES6加入了SymbolES2020又加了BigInt。再加上作为“一家之主”的Object包括Array、Function、Date等引用类型总共8种。这8种类型我们一个一个盘。一、String话痨属性啥都能变成它String类型就是文本数据用引号包着。单引号、双引号、反引号模板字符串都行。letname张三;letgreeting你好;lettemplate我的名字是${name};String的特点就是“啥都能变成字符串”。你给它一个数字它给你变字符串给它一个对象它给你变[object Object]。就像班里的话痨什么话题都能接上。但要注意字符串是不可变的。你不能通过索引修改某个字符只能重新赋值。二、Number数学课代表但总算错账Number类型代表数字包括整数和浮点数。它负责所有的数学运算看起来靠谱但其实有个著名bugconsole.log(0.10.20.3);// false什么数学课代表居然算错其实这不怪JS是计算机二进制浮点数精度问题。所以涉及金钱计算千万别直接用浮点数要用整数分或者用第三方库。Number还有一个特殊成员NaNNot a Number表示“不是一个数字”但它属于Number类型。NaN有个怪癖它不等于自己。console.log(NaNNaN);// false判断是不是NaN要用isNaN()或Number.isNaN()。三、Boolean非黑即白的法官Boolean只有两个值true和false。它负责逻辑判断简单直接。但在JS里很多东西都能“变成”布尔值比如if语句里0、‘’、null、undefined、NaN、false都会被转换成false其余都是true。这就是传说中的真值和假值。记住六个假值false、0、、null、undefined、NaN。其他的都是真。if(hello){console.log(这是真);// 会执行}if(0){console.log(这是假);// 不会执行}四、Null空盒子但身份成谜Null类型只有一个值null。它表示“什么都没有”通常我们用它来清空对象。但Null有个著名的历史遗留bugconsole.log(typeofnull);// object明明是Null类型为什么typeof返回object这是JS第一版设计时的错误后来为了兼容旧代码一直没改。所以判断null要用 null不能用typeof。五、Undefined放鸽子的代表Undefined也只有一个值undefined。它表示“声明了变量但没赋值”就像你叫了外卖但外卖小哥迟迟没到。leta;console.log(a);// undefined函数没有返回值默认返回undefined。访问对象不存在的属性也是undefined。六、Symbol独一无二的身份证ES6新增的Symbol用来创建唯一的值。每次调用Symbol()都会生成一个全新的、独一无二的值即使描述相同。lets1Symbol(id);lets2Symbol(id);console.log(s1s2);// falseSymbol常用于对象属性名防止属性名冲突。比如你要给一个对象添加一个属性但又怕覆盖原来的属性用Symbol就安全了。Symbol还有一个特点它不会出现在for...in循环和Object.keys()里但可以被Object.getOwnPropertySymbols()获取。七、BigInt大数专家解决超限问题BigInt是ES2020新增的用来表示大于2^53-1的整数。因为Number能安全表示的最大整数是Number.MAX_SAFE_INTEGER超出这个范围计算就可能出错。创建BigInt很简单在数字后面加n或者用BigInt()函数。letbig123456789012345678901234567890n;letbig2BigInt(123);BigInt可以和BigInt运算但不能和Number混合运算会报错必须显式转换。八、Object一家之主万物之源Object是引用类型包括普通对象、数组、函数、日期、正则等等。它就像家里的大家长其他类型都是基本类型只有它是复杂类型。基本类型存储的是值而Object存储的是引用内存地址。所以leta{name:张三};letba;b.name李四;console.log(a.name);// 李四因为a和b指向同一个对象。数组、函数都是Object的子类型。判断数组用Array.isArray()判断函数用typeof返回’function’但注意typeof []返回’object’。九、如何判断类型侦探三件套判断数据类型我们有三个工具typeof适合基本类型但对null和Object不够精准。typeofhello;// stringtypeof123;// numbertypeoftrue;// booleantypeofundefined;// undefinedtypeofSymbol();// symboltypeof123n;// biginttypeofnull;// object —— 坑typeof{};// objecttypeof[];// objecttypeoffunction(){};// functioninstanceof检查对象是否是某个构造函数的实例适合引用类型。[]instanceofArray;// true{}instanceofObject;// truefunction(){}instanceofFunction;// trueObject.prototype.toString.call()终极武器能准确判断所有类型。Object.prototype.toString.call(123);// [object Number]Object.prototype.toString.call(123);// [object String]Object.prototype.toString.call(null);// [object Null]Object.prototype.toString.call(undefined);// [object Undefined]Object.prototype.toString.call([]);// [object Array]Object.prototype.toString.call({});// [object Object]Object.prototype.toString.call(function(){});// [object Function]这个方法最靠谱返回格式统一的字符串可以用来写类型判断函数。十、类型转换JS的骚操作之源JS是弱类型语言类型转换非常灵活也因此诞生了很多“经典题目”。隐式转换字符串加法只要有一边是字符串另一边也会转为字符串。11// 11其他运算符会尽量转为数字。5-3// 25*2// 10hello-1// NaN比较运算符双等号会进行类型转换所以11// true0false// truenullundefined// true[]false// true 这个最坑建议总是用三等号避免隐式转换带来的意外。显式转换手动用String()、Number()、Boolean()、parseInt()、parseFloat()等方法。String(123);// 123Number(123);// 123Boolean(0);// falseparseInt(123px);// 123十一、总结数据类型全家福基本类型String话痨、Number数学课代表、Boolean法官、Null空盒子、Undefined放鸽子、Symbol身份证、BigInt大数专家引用类型Object一家之主包括Array、Function、Date等判断类型用三件套注意坑点typeof null ‘object’NaN不等于自己0.10.2不精确。掌握数据类型是学好JavaScript的第一步。明天我们将深入变量的作用域和闭包看看这些类型在内存里是怎么“串门”的。如果你喜欢这篇文章记得点赞收藏让更多小伙伴看到。我们明天见明日预告变量作用域与作用域链——JS的“找东西”逻辑闭包到底是个啥

相关文章:

JavaScript 数据类型全家福:谁是大哥大,谁是小透明?

有人说JS里万物皆对象,有人说JS里类型多得让人头大。今天我们就来盘点一下JavaScript的七种基本数据类型和它们的“爸爸”Object,看看它们各自有什么脾气,日常相处中又有哪些让人哭笑不得的坑。前言 JavaScript的数据类型,就像一大…...

燃气蒸汽锅炉的安全操作规程有哪些

开机前检查检查水位是否正常,严禁缺水启动。检查燃气压力、阀门、管路无泄漏、无异味。检查电源、控制柜、急停按钮正常。检查烟道通畅、无堵塞,风机、水泵无异响。检查压力表、安全阀、水位计完好有效。二、点火启动操作先开水泵,确认水位正…...

Qwen2.5-VL-7B-Instruct模型微调指南:领域适配实战

Qwen2.5-VL-7B-Instruct模型微调指南:领域适配实战 1. 引言 你是不是遇到过这样的情况:通用的大模型虽然强大,但在你的专业领域里总是差那么点意思?比如医疗影像分析时说不准专业术语,或者法律文档理解时抓不住关键要…...

Qwen3-32B-Chat在真实项目中的表现:某SaaS平台AI功能模块压测数据集

Qwen3-32B-Chat在真实项目中的表现:某SaaS平台AI功能模块压测数据集 1. 项目背景与测试环境 在当前的SaaS服务领域,AI功能模块已成为提升产品竞争力的关键要素。我们选择Qwen3-32B-Chat模型作为某SaaS平台智能客服模块的核心引擎,通过私有化…...

Qwen3.5-9B智能体开发:强化学习泛化能力在生产环境应用

Qwen3.5-9B智能体开发:强化学习泛化能力在生产环境应用 1. 项目概述与核心价值 Qwen3.5-9B作为新一代多模态大模型,在智能体开发领域展现出显著的性能提升。该模型基于unsolth框架构建,通过Gradio Web UI提供服务接口,默认运行在…...

【deepseek】PCIe 时钟架构介绍

PCIe 时钟架构介绍 PCIe (Peripheral Component Interconnect Express) 总线的高速数据传输依赖于精确且稳定的时钟系统。随着 PCIe 协议从 Gen 1 发展到 Gen 6/7,数据传输速率成倍增加,对时钟信号的质量、抖动和架构提出了更高的要求。 以下是关于 PCIe…...

Wan2.1 VAE效率提升:利用Dify平台快速构建AI图像生成工作流

Wan2.1 VAE效率提升:利用Dify平台快速构建AI图像生成工作流 最近在尝试把一些新的AI模型能力集成到实际应用里,Wan2.1 VAE就是其中一个让我眼前一亮的工具。它能在图像生成的后处理阶段,有效提升画面的清晰度和细节表现,让生成的…...

BGE-Large-Zh实际作品:向量示例+热力图+最佳匹配三视图完整呈现

BGE-Large-Zh实际作品:向量示例热力图最佳匹配三视图完整呈现 1. 工具概览:中文语义理解的视觉化利器 BGE-Large-Zh语义向量化工具是一个专门为中文文本理解设计的本地化工具,它能够将中文文字转换为机器可以理解的数字向量,并通…...

Swift-All低成本入门:从模型下载到微调部署,全程费用不到50元

Swift-All低成本入门:从模型下载到微调部署,全程费用不到50元 想玩转大模型,但一看到动辄需要几十GB显存的A100、H100,再看看云服务器按小时计费的价格,是不是瞬间觉得钱包一紧,梦想破灭?别急着…...

第6章:起飞!从零实现无人机“外部大脑”控制(PX4 Offboard 模式全解析)

你有没有想过,如何让无人机像提线木偶一样,被外部计算机精准操控?不是遥控器,而是一行行代码、一个个数据流,让无人机在天空中完成复杂任务?这就是 PX4 Offboard 控制 的魅力所在。今天,我们就来…...

安全加固你的InternLM2-Chat-1.8B服务:防范提示词注入与滥用

安全加固你的InternLM2-Chat-1.8B服务:防范提示词注入与滥用 最近有不少朋友在部署自己的AI对话服务,特别是像InternLM2-Chat-1.8B这样轻量又好用的模型。部署上线后,大家最关心的问题往往是:效果怎么样?速度快不快&a…...

微信域名拦截检测避坑指南:从原理到PHP代码实现

微信域名拦截检测实战:PHP实现与深度解析 微信生态中的域名拦截机制一直是开发者关注的焦点问题。当用户分享链接到微信时,可能会遇到各种拦截情况,导致用户体验下降甚至业务损失。本文将深入剖析微信域名拦截的技术原理,并提供一…...

OpenEuler环境下的Apache服务器优化配置与性能调优实战

1. OpenEuler与Apache服务器基础环境搭建 在OpenEuler操作系统上部署Apache服务器是构建Web服务的第一步。OpenEuler作为一款面向企业级应用的开源Linux发行版,其稳定性与安全性使其成为服务器部署的理想选择。这里我会分享从系统准备到Apache基础安装的全流程实战经…...

2025年Mapbox零基础实战指南:从地图初始化到3D交互开发

1. Mapbox GL JS 初识:为什么选择它? 第一次接触Mapbox GL JS时,我正为一个物流可视化项目选型。当时对比了OpenLayers、Leaflet等主流方案,最终被Mapbox的三点特性打动: 跨维度渲染能力是最大亮点。传统WebGIS框架往…...

M1 Mac实战:从零反编译微信小程序源码

1. 环境准备:M1 Mac的特别注意事项 在M1/M2芯片的Mac上反编译微信小程序,首先要解决架构差异带来的环境适配问题。与Intel Mac不同,Apple Silicon设备需要特别注意Node.js的版本选择和系统权限配置。我实测发现,直接使用Homebrew安…...

JupyterNotebook实战:5个提升数据分析效率的隐藏技巧(附代码示例)

JupyterNotebook实战:5个提升数据分析效率的隐藏技巧(附代码示例) 当你已经能够熟练使用JupyterNotebook完成基础数据分析任务时,是否曾感觉某些重复性操作正在吞噬你的时间?或是面对大型数据集时,Notebook…...

从零到一:基于立创EDA的STM32F103C8T6最小系统PCB实战设计

1. STM32最小系统设计基础 STM32F103C8T6作为入门级ARM Cortex-M3内核微控制器,凭借其丰富的外设资源和亲民的价格,成为电子爱好者首选的开发平台。最小系统板就像是为芯片搭建的"基础设施",包含让芯片正常工作的所有必要电路。我刚…...

DVWA文件包含漏洞实战:从allow_url_include配置到GetShell全流程解析

DVWA文件包含漏洞实战:从环境配置到攻击防御全解析 漏洞原理与靶场环境搭建 文件包含漏洞是Web安全领域常见的高危漏洞之一,它允许攻击者通过动态文件包含机制读取敏感文件或执行任意代码。在PHP开发中,include、require等函数的不当使用是导…...

【Java面试必考】面向对象核心:三大特性、抽象类与接口、重写与重载详解

1. 面向对象三大特性(背诵版) 封装(Encapsulation):隐藏对象的属性和实现细节,仅对外公开接口。 通俗解释:就像ATM机,你只需要知道怎么插卡、输入密码、取钱(对外暴露的方…...

RimWorld Mod开发避坑指南:从零开始配置.NET 4.7.2环境到生成dll

RimWorld Mod开发实战指南:从环境搭建到高效调试的全流程解析 在星际殖民模拟游戏RimWorld的创意工坊中,超过5万个玩家自制Mod构成了这个沙盒游戏最迷人的生态。当你在Steam创意工坊点击"订阅"按钮时,是否曾好奇这些改变游戏规则的…...

Reflexion框架解析:如何通过语言反馈实现LLM Agent的自我强化

1. 什么是Reflexion框架? 想象一下你在玩一个解谜游戏,第一次尝试失败后,系统不是简单显示"Game Over",而是用文字详细告诉你:"刚才在第三关应该先拿蓝色钥匙再开门"。这种自然语言反馈就是Reflex…...

Astrofox:如何用3个步骤将音频变成惊艳的视觉盛宴

Astrofox:如何用3个步骤将音频变成惊艳的视觉盛宴 【免费下载链接】astrofox Astrofox is a motion graphics program that lets you turn audio into amazing videos. 项目地址: https://gitcode.com/gh_mirrors/as/astrofox 想象一下,你最喜欢的…...

电力负荷预测数据集盘点:从单站到多区域的实战资源指南

1. 电力负荷预测数据集的重要性与选型原则 电力负荷预测是能源管理系统的核心环节,无论是电网调度、电力市场交易还是新能源消纳,都离不开精准的负荷预测。我在实际项目中发现,选对数据集往往比算法调参更重要——就像做饭时食材新鲜度决定菜…...

三菱fx5u PLC螺丝机项目全套程序(含威纶触摸屏与三菱伺服电机控制)

三菱fx5u plc螺丝机项目整套程序(含触摸屏程序) 程序注释全面,用的三菱fx5u系列plc和威纶触摸屏、三菱伺服电机。 文件包括plc程序、触摸屏程序、电气图、IO地址分配表、电气BOM表、伺服参数配置,本程序已设备上成熟生产。 自己辛…...

Swin2SR跨平台支持:移动端集成的技术挑战与方案

Swin2SR跨平台支持:移动端集成的技术挑战与方案 1. 移动端超分技术的核心价值 在移动互联网时代,用户对图像质量的要求越来越高。无论是社交分享、电商展示还是内容创作,高清图像都成为基本需求。然而移动设备受限于网络条件、存储空间和计…...

DeepChat跨平台部署指南:从环境诊断到生产构建的全流程实践

DeepChat跨平台部署指南:从环境诊断到生产构建的全流程实践 【免费下载链接】deepchat DeepChat - 连接强大AI与个人世界的智能助手 | DeepChat - A smart assistant that connects powerful AI to your personal world 项目地址: https://gitcode.com/GitHub_Tre…...

php方案 PHP的数据库Schema版本管理

用 https://github.com/cakephp/phinx,框架无关,最常用。composer require robmorgan/phinx配置// phinx.php(放项目根目录)return [paths > [migrations > db/migrations],environments > [default_environment > de…...

从图形学到机械臂控制:如何用Bresenham算法实现3轴机械臂的直线插补(附Processing代码)

从图形学到机械臂控制:Bresenham算法在3轴机械臂直线插补中的实战应用 当我在工作室第一次尝试让机械臂画出完美直线时,电机发出的咔嗒声和纸上歪歪扭扭的轨迹形成了鲜明对比。这让我意识到,将图形学算法移植到物理世界需要跨越理论到实践的鸿…...

RetinaFace人脸检测实战:从镜像部署到批量图片处理的完整流程

RetinaFace人脸检测实战:从镜像部署到批量图片处理的完整流程 1. 项目概述与准备工作 RetinaFace作为当前最先进的人脸检测算法之一,以其高精度和鲁棒性著称。本教程将带你从零开始,完成RetinaFace镜像的部署与使用,最终实现批量…...

实测7天!2026年AI工具红黑榜:90%程序员都在交智商税,谁在封神谁在割韭菜?

大家好,我是一名长期混迹 CSDN 的前端开发兼内容创作者,日常写代码、做毕设、写博客、做 PPT、整理会议纪要。过去半个月我把2026 年全网最火、争议最大的 AI 工具全部拉满实测,从免费额度用到付费会员,覆盖写作、代码、长文档、办…...