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

JavaScript 的变量本身没有类型,类型是绑定在值上的;变量只是指向某个值的“名字”。真正重要的是数据类型——它决定了你能对这个值做什么操作。
基本数据类型(Primitive Types)
共 7 种,都是不可变的、按值传递:
string:文本,如 “hello”、’world’、`template ${x}` number:所有数字(整数、小数、NaN、Infinity),如 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 提供三种声明变量的关键字,影响作用域和提升行为:
立即学习“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 声明的对象不是“不可变”,只是不能重新赋值。
以上就是JavaScript的变量和数据类型有哪些?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1542981.html
微信扫一扫
支付宝扫一扫