javascript原始类型操作的核心是值直接存在、不可变、按值传递;七种具体类型为string、number、boolean、null、undefined、symbol、bigint,其中null和undefined属原始类型,typeof null返回"object"是历史bug,symbol唯一不可变,bigint以n结尾且不可与number混算。

JS 原始类型操作的核心,不在于记住多少种类型,而在于理解“值直接存在、不可变、按值传递”这三点。所有行为——比较、赋值、函数传参、隐式转换——都从这个底层逻辑自然展开。
原始类型的七种具体成员
它们是:string、number、boolean、null、undefined、symbol、bigint。注意:
-
null 和 undefined 虽然语义不同,但都属于原始类型,且
typeof null返回"object"是历史遗留 bug,不代表它真是对象 -
symbol 每次调用
Symbol()都生成唯一值,即使描述相同也不相等 -
bigint 必须以
n结尾(如123n),不能与普通number混合运算,否则报错
原始类型的操作本质:值拷贝
声明变量并赋值原始类型时,变量中存储的就是那个具体的值本身,不是地址。因此:
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- 赋值给新变量,是复制一份独立的值,彼此互不影响
- 作为参数传入函数,函数内部修改形参,不会影响外部实参
- 两个原始值相等,只看内容是否一致,比如
"a" === "a"为true,0 === -0也为true
类型判断的可靠方式
typeof 对大多数原始类型有效,但有明显局限:
-
typeof null→"object"(错误) -
typeof []、typeof {}、typeof new Date()全部返回"object"(无法区分)
真正通用且准确的方法是:
- 用
Object.prototype.toString.call(value),返回形如"[object String]"的字符串 - 对
null和undefined也完全适用:Object.prototype.toString.call(null)→"[object Null]"
常见隐式转换场景与风险
原始类型在运算或比较中常被自动转换,需特别留心:
-
==触发强制类型转换,0 == false、"" == false、"0" == false全为true,推荐一律使用=== -
+运算符遇到字符串,会把其他操作数转成字符串拼接:1 + "2"→"12" -
!value转布尔时,只有false、0、-0、""、null、undefined、NaN为假,其余为真(0n、""、new Boolean(false)等要单独注意)










