跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

javascript变量与数据类型有哪些区别?【教程】

JavaScript中变量无类型,只有数据类型;变量是值的引用标签,可动态绑定任意类型值,原始类型有7种且按值比较,其余均为object,typeof和instanceof易误用,应优先使用Array.isArray等可靠方法判断。 JavaScript 中没有“变量类型”,只有“数据类型”;变量只是指向值的符号名称,本身不携带类型信息。 变量只是值的引用标签 声明
let x = 42
后,
x
不是“一个 number 类型的变量”,它只是一个绑定到数字值
42
的标识符。后续可赋值为字符串、对象等任意类型:
let x = 42; x = "hello"; x = { name: "Alice" };
这种动态绑定是 JS 的核心特性,也是类型错误常在运行时才暴露的原因。 七种原始数据类型与 Object 区别明显 JS 规范定义了 7 种原始(primitive)类型:
string
、
number
、
boolean
、
null
、
undefined
、
symbol
、
bigint
。它们按值比较、不可变、无方法(但能通过包装对象临时访问方法)。 立即学习 “ Java免费学习笔记(深入) ”; Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载 其余一切(包括数组、函数、日期、正则、
Promise
)都是
object
类型(
typeof null === "object"
是历史 bug,需单独判断)。
typeof []
→
"object"
,不是
"array"
typeof function() {}
→
"function"
(这是
typeof
对
object
的特例返回)
Array.isArray([])
才是判断数组的可靠方式 typeof 和 instanceof 容易误用
typeof
只能区分原始类型和部分对象,对大部分对象都返回
"object"
;
instanceof
依赖原型链,在跨 iframe 或 ES 模块环境可能失效。 更稳妥的判断方式: 数组:
Array.isArray(x)
日期:
x instanceof Date
或
Object.prototype.toString.call(x) === "[object Date]"
空对象:
Object.keys(x).length === 0 && x.constructor === Object
基本类型检测优先用
typeof
,但记得
null
需单独处理 真正容易出错的不是记不住类型列表,而是混淆“变量可变”和“值类型可变”——比如以为给
const obj = {}
赋新对象才算违规,其实修改
obj.prop = 1
完全合法,因为
const
锁的是绑定,不是值的内容。

相关文章