javascript变量和数据类型有哪些?_解析javascript中的变量声明【教程】
发布时间 - 2026-01-27 00:00:00 点击率:次JavaScript变量无类型,类型属于值;var函数作用域、会提升、允重复声明;let/const块级作用域、不提升、禁重复声明;const需初始化且不可重赋值;原始类型按值访问,引用类型按引用访问;typeof null返回"object"是历史bug。
JavaScript 变量本身没有类型,类型属于值;声明变量只是绑定一个标识符到内存中的值,而这个值随时可能被替换为其他类型的数据。
let/const/var 声明的区别在哪
三者核心差异在作用域、提升(hoisting)和重复声明行为:
-
var有函数作用域,会被提升到函数顶部,且允许重复声明(不报错) -
let和const是块级作用域,不会被提升(但存在“暂时性死区”),重复声明会直接报错Identifier 'x' has already been declared -
const声明后必须初始化,且不能重新赋值(注意:对象或数组内容仍可修改,只是绑定不可变)
原始类型和引用类型怎么区分
原始类型(primitive)按值访问,复制时拷贝的是值本身;引用类型(object)按引用访问,复制时拷贝的是指向堆内存的地址:
- 原始类型共 7 种:
string、number、boolean、null、undefined、symbol、bigint - 引用类型包括:
Object、Array、Function、Date、RegExp、Map、Set、Promise等 - 判断类型优先用
typeof(对null返回"object"是历史 bug),更准确可用Object.prototype.toString.call(x)
为什么 typeof null === "object"
这是 JavaScript 最早版本的实现缺陷:null 在底层被表示为全零的机器码,而当时类型标签恰好把全零解释为 object。后续标准未修正,以保持兼容性:
- 检查是否为真正对象,不能只靠
typeof x === "object",要额外排除null - 安全写法是:
x !== null &&
typeof x === "object" && !Array.isArray(x)
- ES6 后新增
Symbol.toStringTag允许自定义Object.prototype.toString输出,但不影响typeof
类型系统是动态的,变量可以随时被赋不同类型的值;真正需要关注的是值的行为——比如调用 .push() 前先确认它是数组,而不是纠结变量“应该”是什么类型。
# javascript
# es6
# java
# 区别
# 作用域
# 为什么
# red
# 数据类型
# String
# Boolean
# Array
# Object
# NULL
# date
# 标识符
# const
# 无类型
# 堆
# 引用类型
# var
# map
# number
# undefined
# symbol
# function
# regexp
# 对象
# typeof
# promise
# prototype
# bug
# 的是
# 报错
# 绑定
# 这是
# 它是
# 自定义
# 但不
# 可以随时
# 不同类型
# 前先
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
教你用AI润色文章,让你的文字表达更专业
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
lovemo网页版地址 lovemo官网手机登录
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
如何在IIS中新建站点并配置端口与IP地址?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
南京网站制作费用,南京远驱官方网站?
iOS正则表达式验证手机号、邮箱、身份证号等
Laravel如何生成URL和重定向?(路由助手函数)
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
如何快速建站并高效导出源代码?
网站制作免费,什么网站能看正片电影?
*服务器网站为何频现安全漏洞?
如何快速搭建高效可靠的建站解决方案?
如何在IIS7上新建站点并设置安全权限?
Laravel如何使用Sanctum进行API认证?(SPA实战)
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
重庆市网站制作公司,重庆招聘网站哪个好?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
javascript读取文本节点方法小结
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
如何为不同团队 ID 动态生成多个“认领值班”按钮
Linux安全能力提升路径_长期防护思维说明【指导】
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何实现建站之星域名转发设置?
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
利用python获取某年中每个月的第一天和最后一天
深圳网站制作培训,深圳哪些招聘网站比较好?
如何快速使用云服务器搭建个人网站?
Linux系统命令中screen命令详解
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
Laravel如何实现用户密码重置功能?(完整流程代码)
高性价比服务器租赁——企业级配置与24小时运维服务
香港网站服务器数量如何影响SEO优化效果?


