JavaScript变量无类型,类型属于值;基本数据类型共7种,不可变且按值传递,如string表示文本。

JavaScript 的变量本身没有类型,类型是绑定在值上的;变量只是指向某个值的“名字”。真正重要的是数据类型——它决定了你能对这个值做什么操作。
基本数据类型(Primitive Types)
共 7 种,都是不可变的、按值传递:
- string:文本,如 "hello"、'world'、42、3.14、NaN
- boolean:只有两个值:true 和 false
- null:一个独立的原始值,表示“空值”或“有意缺失的对象引用”
- undefined:变量声明了但未赋值时的默认值,也用于对象中不存在的属性
- symbol:ES6 新增,用于创建唯一标识符,常用于对象属性名避免冲突
- bigint:ES2020 新增,表示任意精度的整数,用 123n 语法创建
引用数据类型(Object Types)
所有非原始类型的值都属于这一类,本质是对象(包括函数、数组等),按引用传递:
- object:普通对象,如 { name: "Alice", age: 30 }
- array:有序集合,如 [1, 2, 3] —— 实际上是特殊对象,有 length 和方法
- function:函数也是对象,可赋值、传参、返回,如 function foo() {}
- date:日期对象,如 new Date()
- regexp:正则表达式对象,如 /abc/g
- map 和 set:ES6 新增的集合类型,支持键值对或唯一值存储
- weakmap 和 weakset:弱引用版本,不影响垃圾回收
- promise:异步操作的占位符对象
- proxy、reflect、iterator 等高级内置对象
变量声明方式与行为差异
JS 提供三种声明变量的关键字,影响作用域和提升行为:
易通(企业网站管理系统)是一款小巧,高效,人性化的企业建站程序.易通企业网站程序是国内首款免费提供模板的企业网站系统.§ 简约的界面及小巧的体积:后台菜单完全可以修改成自己最需要最高效的形式;大部分操作都集中在下拉列表框中,以节省更多版面来显示更有价值的数据;数据的显示以Javascript数组类型来输出,减少数据的传输量,加快传输速度。 § 灵活的模板标签及模
立即学习“Java免费学习笔记(深入)”;
- var:函数作用域,会变量提升(hoisting),可重复声明
- let:块级作用域,会提升但不初始化(暂时性死区 TDZ),不可重复声明
- const:块级作用域,声明后必须赋值,且不能重新赋值(注意:对象/数组内容仍可修改)
如何判断数据类型?
没有万能方法,需组合使用:
- typeof:适合判断原始类型(但 typeof null === "object" 是历史 bug)
- Array.isArray():准确判断是否为数组
- instanceof:检测对象是否由某构造函数创建(依赖原型链)
- Object.prototype.toString.call(x):最可靠,返回 "[object Type]" 字符串
基本上就这些。理解类型归属和变量行为,比死记数量更重要——尤其注意 null 的 typeof 返回 "object",以及 const 声明的对象不是“不可变”,只是不能重新赋值。









