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