前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库JavaScript · 值与类型面试题
面试知识索引 · 分类、标签与搜索

JavaScript · 值与类型面试题,50 道完整答案

JavaScript · 值与类型面试题第 1 页,显示第 1–50 题,共找到 50 道完整解析,可继续按分类、标签与关键词缩小范围。

50筛选结果
52技术分类
178检索标签
1索引分页
按分类建立知识面,再用标签和搜索定位问题

每页只渲染 50 道题。分类与标签分页可抓取,自由搜索结果不会制造无限 SEO 页面。

快速定位

分类、标签与关键词搜索

清除全部筛选
题库检索
技术分类52 个
全部分类5000JavaScript285AI Agent511浏览器301React281AI 开发262CSS240Node.js217TypeScript206Vue180前端工程化138React Native135
查看全部 52 个分类
操作系统135数据库134Docker95计算机网络94API 设计90Kubernetes90HTML89Redis89全栈开发88分布式系统88系统设计86HTTP85Next.js60Angular58Linux53Nuxt51PostgreSQL46可观测性46设计模式46小程序45身份与权限45无障碍44MongoDB43PWA43Web 安全43Git42前端测试42前端性能41WebAssembly40测试40AI 工程37SvelteKit37Go35前端数据管理30React Router29AI 全栈28Svelte27算法12Java10数据结构5前端手写题3
JavaScript 标签22 个
全部标签值与类型50异步编程48数据处理45模块与语言机制40函数与作用域39数组与集合38对象与原型35异步与 Promise34性能优化7并发编程5构建工具5流处理4缓存4表单2事件循环1
查看其余 7 个标签
作用域与函数1容器化1异步与浏览器1手写与交互性能1测试1相等比较1算法1
当前页01 / 1

正在显示第 1–50 题

JavaScript50
第 1 页

本页面试问题

按稳定语义路径排序

  1. 0001
    JavaScript值与类型

    为什么 String([]) 是空字符串,而 String([1,2]) 是 '1,2'?

    数组转字符串时会走 Array.prototype.toString,通常再调用无参数的 join(),用逗号连接元素。空数组、空槽、null 和 undefined 元素会产生容易误读的结果;嵌套数组又会递归转换,[] + [] 的结果还受加号的原始值转换规则影响。

    核心关键词数组 toString 强制转换 空数组
    #值与类型
  2. 0002
    JavaScript值与类型

    typeof [] 为什么是 'object'?怎么准确判断一个值是数组?

    typeof 对数组和普通对象都返回 object,对 null 也一样,因此无法单独用它判断数组。Array.isArray 能跨窗口识别真正的数组,instanceof 受原型链和 realm 影响,Object.prototype.toString 则可能被 Symbol.toStringTag 改写。

    核心关键词Array.isArray typeof 数组检测
    #值与类型
  3. 0003
    JavaScript值与类型

    BigInt 和 Number 能混着算吗?BigInt 在运算和类型转换上有哪些限制?

    BigInt 能精确表示超过 Number 安全整数范围的整数,但两种数值类型不能直接混合做算术,Math 方法也不接受 BigInt。除法会向零截断,JSON.stringify 默认无法直接序列化;接口传输和类型转换要明确选择格式与精度边界。

    核心关键词BigInt Number 运算限制
    #值与类型
  4. 0004
    JavaScript值与类型

    10n 和 BigInt(10) 有什么区别?创建 BigInt 时怎么避免精度已经丢了?

    10n 字面量和 BigInt() 都能得到大整数,但 BigInt() 不接受非整数 Number,非法字符串也会抛错。已经超出安全整数范围的数字在传入 BigInt() 前可能丢失精度;从接口或 JSON 接收大整数时应尽量保留原始字符串。

    核心关键词BigInt 字面量 BigInt()
    #值与类型
  5. 0005
    JavaScript值与类型

    JavaScript 里有哪些假值?能把完整列表背出来吗?

    JavaScript 的假值只有固定几类:false、零、NaN、空字符串、null、undefined,浏览器中的 document.all 还有历史例外。空数组和字符串 "0" 都是真值;条件判断与 == false 使用不同转换步骤,结果不能靠肉眼类比。

    核心关键词JavaScript 假值列表
    #值与类型
  6. 0006
    JavaScript值与类型

    new Boolean(false) 和 false 有什么区别?放进 if 里会怎样?

    new Boolean(false) 得到的是对象,在 if 中仍然是真值;Boolean(false) 才返回布尔原始值。包装对象与原始值在 typeof、宽松相等和条件判断中表现不同,拿包装对象保存开关状态容易造成反直觉的分支结果。

    核心关键词Boolean 包装对象 真值
    #值与类型
  7. 0007
    JavaScript值与类型

    charAt、charCodeAt 和 codePointAt 有什么区别?处理 emoji 该用哪个?

    JavaScript 字符串按 UTF-16 码元存储,部分表情符号占两个码元,因而 "😀".length 为 2。charAt 和 charCodeAt 按码元读取,codePointAt 可读完整码点;截取用户看到的字符时还要考虑组合表情等字素簇。

    核心关键词charAt charCodeAt codePointAt 区别
    #值与类型
  8. 0008
    JavaScript值与类型

    为什么 [] == ![] 是 true,而 [] == [] 是 false?

    [] == ![] 为真,是因为 ![] 先得到 false,随后宽松相等又把两边转换为数字零;[] == [] 为假,则是两个不同对象按引用比较。类似表达式必须按转换顺序逐步推导,不能把“数组等于 false”当作通用结论。

    核心关键词数组相等 类型转换 宽松相等
    #值与类型
  9. 0009
    JavaScript值与类型

    用 == 比较字符串和数字时,转换规则是什么?

    用 == 比较字符串和数字时,JS 会把字符串转成数字再比较。空字符串变 0、带字母的变 NaN。搞清 ToNumber 的转换规则和 parseInt 的区别,就能避开最常见的隐式转换陷阱。

    核心关键词宽松相等 字符串数字 转换
    #值与类型
  10. 0010
    JavaScript值与类型

    null == undefined 为什么是 true?== 和 === 对空值的处理有什么不同?

    null == undefined 为 true 是 JS 规范里的特殊规则,它们只和彼此宽松相等,不会匹配 0 或 false。搞清这条规则就能理解 value == null 这个常见写法的原理和边界。

    核心关键词宽松相等 null undefined 相等性
    #值与类型
  11. 0011
    JavaScript值与类型

    JS 里的 1e3 是什么意思?指数表示法有哪些容易踩的坑?

    1e3 就是 1 乘以 10 的 3 次方,等于 1000。指数表示法在词法层面解析,不是运行时乘法。搞清它和 parseInt、Number 的关系,以及什么时候引擎会自动用科学计数法输出。

    核心关键词指数表示法 科学计数法 数字字面量
    #值与类型
  12. 0012
    JavaScript值与类型

    JS 里什么运算会产生 Infinity?它参与计算时有哪些特殊行为?

    正数除以零得到 Infinity,负数除以零得到 -Infinity。Infinity 是合法的 number 类型值,参与算术有自己的规则。搞清哪些运算会产生它、怎么检测它、以及 JSON 序列化时的坑。

    核心关键词Infinity JavaScript 无穷大
    #值与类型
  13. 0013
    JavaScript值与类型

    typeof 和 instanceof 分别在什么场景下用?各有什么坑?

    typeof 返回字符串,适合判断原始类型但对 null 返回 object。instanceof 检查原型链,适合判断对象是哪个构造函数的实例但对原始值无效。搞清两者的适用范围和常见陷阱。

    核心关键词typeof instanceof 类型检查
    #值与类型
  14. 0014
    JavaScript值与类型

    JS 的 Number 能精确表示的整数范围是多少?超过了会怎样?

    Number 基于 IEEE 754 双精度浮点,安全整数范围是正负 9007199254740991。超过后相邻整数会被舍入成同一个值。搞清为什么是 2 的 53 次方减 1,以及什么时候该用 BigInt。

    核心关键词JavaScript 安全整数范围
    #值与类型
  15. 0015
    JavaScript值与类型

    JS 的 || 和 && 返回的到底是布尔值还是原值?

    JS 的逻辑或和逻辑与返回的不是 true 或 false,而是两个操作数中的某一个原值。搞清短路求值的规则和返回值的类型,就能理解默认值写法和条件执行的原理。

    核心关键词逻辑或与 返回值 短路
    #值与类型
  16. 0016
    JavaScript值与类型

    为什么 NaN 不等于自身?怎么可靠地判断一个值是不是 NaN?

    NaN 与自身用 === 比较也为 false,这是 IEEE 754 的相等规则。Number.isNaN 不做类型转换,全局 isNaN 会先转换输入;数组的 indexOf 找不到 NaN,includes 却能找到,因为两种方法使用的相等算法不同。

    核心关键词JavaScript NaN 判断
    #值与类型
  17. 0017
    JavaScript值与类型

    什么操作会得到 -0?它和 0 有哪些行为上的区别?

    IEEE 754 保留了正零和负零的区别。JS 里 -0 === 0 为 true,但 Object.is 能区分,1 除以 -0 得到 -Infinity。搞清负零怎么产生、怎么检测、以及 JSON 序列化会丢失符号。

    核心关键词JavaScript 负零 -0
    #值与类型
  18. 0018
    JavaScript值与类型

    ?? 和 || 给默认值有什么区别?什么时候该用哪个?

    ?? 只在左侧为 null 或 undefined 时启用默认值,|| 遇到零、false 或空字符串也会回退,因此处理合法业务值时结果不同。?? 与 &&、|| 直接混用有语法限制,??= 只在空值时赋值,可选链常与它一起处理缺失字段。

    核心关键词空值合并运算符 逻辑或 区别
    #值与类型
  19. 0019
    JavaScript值与类型

    JavaScript 的 Number 在内存里是怎么存的?符号、指数、尾数各占几位?

    JavaScript 的 Number 采用 IEEE 754 双精度格式,包含符号位、偏移指数和有效数字尾数。指数影响可表示范围,尾数限制精度;隐含的最高有效位解释了安全整数边界,非规格化数则关系到最小正数和下溢。

    核心关键词双精度 浮点数 存储格式 指数 尾数
    #值与类型
  20. 0020
    JavaScript值与类型

    全局 isFinite 和 Number.isFinite 有什么区别?

    全局 isFinite 会先做数值转换,因此字符串 "42"、null 与空字符串都可能得到 true;Number.isFinite 只接受真正的有限 number。表单输入应先明确解析规则,再检查是否有限;BigInt 和无穷大也不能混为一谈。

    核心关键词isFinite Number.isFinite 区别
    #值与类型
  21. 0021
    JavaScript值与类型

    parseInt 有哪些坑?为什么 ['1', '2', '3'].map(parseInt) 结果不对?

    parseInt 会从字符串开头读取可识别的整数部分,碰到不合法字符就停止,一个数字都读不到才是 NaN。radix 指定进制,0x 前缀有特殊处理;把它直接传给 map 或用于极小浮点数时,隐式参数和科学计数法会制造意外结果。

    核心关键词parseInt 字符串解析 陷阱
    #值与类型
  22. 0022
    JavaScript值与类型

    字符串转数字,Number()、parseInt、parseFloat 和一元加号有什么区别?

    Number() 和一元加号要求输入整体符合数字转换规则,parseInt 与 parseFloat 则能在前缀合法时提前停止。空串、带单位文本、进制前缀和科学计数法因此会得到不同结果;处理用户输入时应先决定是否允许尾部杂质。

    核心关键词Number parseInt parseFloat 字符串转数字
    #值与类型
  23. 0023
    JavaScript值与类型

    toFixed 返回什么类型?为什么 1.005.toFixed(2) 是 1.00 而不是 1.01?

    toFixed 返回字符串,并按 Number 实际保存的二进制值舍入;十进制的 1.005 不能精确存储,保留两位可能得到 1.00。数值足够大时还会改用指数记法,金额计算应避免把展示格式化当成精确运算。

    核心关键词toFixed 舍入 精度
    #值与类型
  24. 0024
    JavaScript值与类型

    怎么把十进制数转成二进制、八进制、十六进制字符串?有什么限制?

    Number 的 toString(radix) 可把数值表示为 2 到 36 进制字符串,负数输出负号而非补码。小数转换可能无法有限结束,补零又是字符串格式问题;超过 Number 安全整数范围的输入应先保留精度,再考虑用 BigInt 转换。

    核心关键词Number toString radix 进制转换
    #值与类型
  25. 0025
    JavaScript值与类型

    为什么 0.1 + 0.2 不等于 0.3?浮点数该怎么比较?

    0.1 和 0.2 不能用有限二进制小数精确表示,Number 存储时发生舍入,相加后会看到 0.30000000000000004。用 Number.EPSILON 比较只适合相应数量级的误差,金额运算通常需整数分或十进制定点方案。

    核心关键词JavaScript 浮点数精度 0.1+0.2
    #值与类型
  26. 0026
    JavaScript值与类型

    Number 能表示的最小正数是多少?为什么会有 +0 和 -0?

    Number.MIN_VALUE 是最小正的非零浮点数,约为 5e-324,和最小安全整数毫无关系。更小的正数会下溢;正负零在 === 下相等、在 Object.is 下不同,除法等运算还能保留或暴露负零符号。

    核心关键词JavaScript 最小正数 下溢 负零
    #值与类型
  27. 0027
    JavaScript值与类型

    数字分隔符 _ 能用在哪些字面量里?写在哪些位置会报错?

    数字分隔符允许在字面量的数字之间插入下划线,十进制、其他进制、BigInt 和指数部分都能用,但不能放在开头、结尾或紧挨小数点。它只是源码书写语法,Number("1_000") 不会按分隔符解析,反而得到 NaN。

    核心关键词JavaScript 数字分隔符 下划线
    #值与类型
  28. 0028
    JavaScript值与类型

    怎么用 Object.prototype.toString 做比 typeof 更精确的类型判断?

    typeof 对数组、日期等对象只能给出粗略的 object 结果,Object.prototype.toString.call 可得到 [object Array] 标签。借用基类方法可避开实例自己的 toString;Symbol.toStringTag 却能改写标签,判断数组应使用 Array.isArray。

    核心关键词Object.prototype.toString 类型判断
    #值与类型
  29. 0029
    JavaScript值与类型

    对象转字符串时,先调 valueOf 还是先调 toString?

    对象转原始值时,字符串上下文通常先尝试 toString,数字和默认上下文通常先尝试 valueOf;Symbol.toPrimitive 存在时会优先接管。返回对象而非原始值可能触发回退或异常,Date 的默认转换又与一般对象不同。

    核心关键词对象转字符串 valueOf toString 顺序
    #值与类型
  30. 0030
    JavaScript值与类型

    a = b === c 到底先算哪一步?优先级会引出哪些 bug?

    a = b === c 会先比较 b 与 c,再把布尔结果赋给 a,因为相等比较的优先级高于赋值。连续赋值还涉及结合方向;在 if 条件中少写一个等号、取反位置写错或混入位运算符,都可能让表达式合法却语义错误。

    核心关键词运算符优先级 赋值 相等
    #值与类型
  31. 0031
    JavaScript值与类型

    一元加号 +x 和 Number(x) 有什么区别?

    一元加号和 Number() 对常见字符串、布尔值、null、undefined 与对象使用相同的数值转换规则,但对 BigInt 不同:Number(10n) 可显式转换,+10n 会抛 TypeError。它们与 parseInt 的前缀解析也不同,处理输入要避免静默截断。

    核心关键词一元加号 类型转换 Number()
    #值与类型
  32. 0032
    JavaScript值与类型

    字符串是原始类型,为什么还能调用 toUpperCase 这样的方法?

    读取字符串等原始值的方法时,引擎会临时提供对应包装对象,从原型上找到方法,用完不保留这层包装。给原始值添加自定义属性不会形成持久状态;new String 等显式包装对象又有不同的真值与相等行为,null 和 undefined 更不能这样访问。

    核心关键词原始类型包装对象方法
    #值与类型
  33. 0033
    JavaScript值与类型

    Object.is 和 === 有什么区别?什么时候非用 Object.is 不可?

    Object.is 与 === 的差别集中在 NaN 和正负零;includes、Set、Map 使用的 SameValueZero 则把 NaN 视为相同,也不区分正负零。React 的状态比较采用 Object.is,遇到负零或 NaN 更新时,不能直接拿 === 的结果推断。

    核心关键词Object.is -0 NaN 比较
    #值与类型
  34. 0034
    JavaScript值与类型

    字符串和数字、布尔值用加号拼接时,到底是怎么转换的?

    加号会先把操作数转为原始值,只要其中一个是字符串就拼接,否则再做数值相加。因此 1 + 2 + "3" 与 "1" + 2 + 3 的结果不同;对象、数组及 null 参与时还要看转换顺序,减号却不会执行字符串拼接。

    核心关键词字符串拼接 类型转换 加号运算符
    #值与类型
  35. 0035
    JavaScript值与类型

    字符串里怎么用转义写 Unicode 字符?反斜杠本身又该怎么写?

    JavaScript 字符串用反斜杠表示换行、引号和反斜杠本身;十六进制与 Unicode 转义还能写出指定码点。四位 Unicode 转义放不下部分表情符号,需用花括号码点形式;正则表达式和 Windows 路径经过多层字符串解析时尤其容易多写或漏写反斜杠。

    核心关键词String 转义序列 Unicode \n
    #值与类型
  36. 0036
    JavaScript值与类型

    字符串是原始类型,为什么还能用下标取字符?能用下标改吗?

    字符串下标可以读取 UTF-16 码元,却不能像数组下标那样改写字符;严格模式下给只读索引赋值还会报错。charAt、at 与方括号对越界和负索引的处理不同,表情符号被下标切开时还可能只取到代理项的一半。

    核心关键词字符串原始类型 下标访问字符
    #值与类型
  37. 0037
    JavaScript值与类型

    为什么一个表情符号的 length 是 2,家庭表情甚至是 8?

    字符串 length 统计 UTF-16 码元,常用汉字通常占一个码元,许多表情符号占两个,家庭表情等组合序列还会占更多。展开运算符按码点遍历,Intl.Segmenter 才能更贴近用户看到的字素簇;昵称截断要选对单位。

    核心关键词JavaScript 字符串长度 Unicode 编码
    #值与类型
  38. 0038
    JavaScript值与类型

    两个看起来一模一样的字符串,为什么用 === 比较却不相等?

    预组合的 é 与 e 加组合重音符视觉相同,底层码点不同,直接用 === 比较会失败。normalize 可转换成 NFC、NFD 等形式以便搜索和去重;兼容正规化还可能改变字符含义,用户名校验与文件名处理要谨慎选用。

    核心关键词Unicode 正规化 normalize 字符串相等
    #值与类型
  39. 0039
    JavaScript值与类型

    slice、substring、substr 遇到负数和起止颠倒时有什么区别?

    slice、substring、substr 在普通正数范围下看起来相似,负数和起止颠倒时却明显不同:slice 可从末尾计数,substring 会把负数当零并交换边界,substr 的第二个参数是长度。新代码优先选语义清楚的 slice,避免依赖遗留方法。

    核心关键词String slice substring substr 区别
    #值与类型
  40. 0040
    JavaScript值与类型

    String 的 valueOf 和 toString 有区别吗?为什么对 new String 调用会拿到原始字符串?

    String 包装对象的 valueOf 与 toString 都返回内部原始字符串,但对象转换时先调用谁取决于上下文。模板插值偏向字符串转换,加号通常采用默认转换;重写其中一个方法后,相同对象在两种表达式中可能显示不同结果。

    核心关键词String valueOf toString 区别
    #值与类型
  41. 0041
    JavaScript值与类型

    用 Symbol 当对象的键,和字符串键有什么不同?哪些 API 会忽略它?

    Symbol 属性键不会与同名字符串键冲突,也不会出现在 Object.keys、for...in 或 JSON.stringify 的普通对象属性结果中。Reflect.ownKeys 能读到它,展开运算符与 Object.assign 还会复制可枚举 Symbol 键,所以隐藏不等于私有。

    核心关键词Symbol 属性键 字符串键
    #值与类型
  42. 0042
    JavaScript值与类型

    为什么 Symbol() 每次都不相等,还不能用 new 调用?

    每次调用 Symbol() 都创建新的唯一原始值,描述文字相同也不会相等;Symbol.for 则通过全局注册表复用键。Symbol 不能用 new 创建,隐式转成字符串也会失败;作为对象属性键时它能避免普通字符串命名冲突。

    核心关键词Symbol 原始类型 唯一性
    #值与类型
  43. 0043
    JavaScript值与类型

    模板字符串和加号拼接,类型转换有什么不一样?嵌套时要注意什么?

    模板插值会按字符串上下文转换对象,加号拼接通常先走默认原始值转换;自定义 valueOf 和 toString 后,两种写法可能得到不同文本。Symbol 的隐式转换还有特别限制,嵌套模板与标签模板也不等同于普通字符串拼接。

    核心关键词模板字符串 类型转换 表达式
    #值与类型
  44. 0044
    JavaScript值与类型

    JSON.stringify 遇到 undefined、函数和 Symbol 会怎么处理?

    JSON.stringify 遇到 undefined、函数或 Symbol 时,在对象属性里会省略,在数组位置会变成 null,作为顶层值则返回 undefined。NaN、Date、BigInt 与循环引用又有不同处理结果;replacer 能控制部分字段,但不能直接解决所有不可序列化值。

    核心关键词JSON.stringify 转换 undefined function Symbol
    #值与类型
  45. 0045
    JavaScript值与类型

    Symbol.toPrimitive 是怎么让对象自己决定转成数字还是字符串的?

    对象参与运算时,Symbol.toPrimitive 若存在会优先接收 number、string 或 default 提示,决定对象如何变成原始值。没有该方法时才按顺序尝试 valueOf 和 toString;Date 在默认提示下偏向字符串,因此日期对象与数字相加可能得到拼接结果。

    核心关键词Symbol.toPrimitive 类型转换 hint
    #值与类型
  46. 0046
    JavaScript值与类型

    为什么字符串方法都返回新字符串,数组方法却会直接改原数组?

    字符串是不可变的原始值,截取、替换等方法返回新字符串;数组是对象,push、sort、splice 等方法会直接改动自身。两者在传参和 React 状态更新中容易被混淆,数组若需保留原值可用 toSorted、toSpliced 等非修改方法。

    核心关键词字符串不可变性 数组可变性
    #值与类型
  47. 0047
    JavaScript值与类型

    typeof 什么时候会返回 'object'?typeof null 为什么也是 'object'?

    typeof 对数组、Date、Map、正则、包装对象和 null 都返回 object,无法单凭结果细分对象种类。判断空值要直接与 null 比较,判断数组用 Array.isArray;未声明变量与暂时性死区中的变量对 typeof 也并非同样安全。

    核心关键词typeof 运算符结果
    #值与类型
  48. 0048
    JavaScript值与类型

    undefined 和 null 到底有什么区别,什么时候该用哪个?

    undefined 常代表尚未赋值或缺少参数,null 通常是代码主动放入的空值。两者在 typeof、宽松相等、数字转换、默认参数和 JSON 序列化中有不同结果;接口字段需要表达“缺失”还是“明确清空”时,这个区别尤其重要。

    核心关键词JavaScript undefined null 区别
    #值与类型
  49. 0049
    JavaScript值与类型

    Number.prototype.valueOf 返回什么?自定义对象的 valueOf 会怎样影响类型转换?

    Number 包装对象的 valueOf 返回内部保存的数字;自定义对象参与加减法或比较时,valueOf 也可能成为取得原始值的第一步。若 Symbol.toPrimitive 存在,它会优先接管转换;返回的仍是对象时还可能继续尝试 toString 或抛错。

    核心关键词Number valueOf Number 强制转换
    #值与类型
  50. 0050
    JavaScript值与类型

    void 运算符有什么用?为什么老代码里到处是 void 0?

    void 会先求值右侧表达式,再把整个表达式的结果固定为 undefined。void 0 曾被用来取得可靠的 undefined,如今也常用来显式丢弃回调返回值或标记不等待的 Promise;它不会吞掉 Promise 的未处理拒绝。

    核心关键词void 运算符 undefined
    #值与类型#异步编程
上一页
1
下一页
前端进阶之旅本地 Markdown 维护 · 服务端分页 · 完整内容对用户与搜索引擎一致