JavaScript 中的类型转化

发布于 2021-12-09 22:36:31 字数 1193 浏览 1191 评论 0

类型转换发生在,程序期望某个类型数据,而实际格式不符的时候,通常特征是使用了:==、+、-、*、运算符,或者 if(variable) 判断

类型转换分为(1)原始值到原始值的转换(2)原始值到对象的转换(3)对象到原始值的转换

  1. 原始值到原始值比较特殊的有:“” 转成布尔是 false;合规字符串可以转化为数字,两头有非数字/空格组成部分的会转成NaN
  2. 原始值到对象,通过 String(val)/Number(val)/Boolean(val) 显式转化成包装对象
  3. 对象到原始值,参考第10条

发生类型转化并不意味着两者相等,比如:if(undefined) {} 中,undefined 被转化为了 false,并不意味着 undefined == false

运算符管理啊的具体操作规则:+(一个是字符串另一个也会转化成字符串),一元运算++/--符会将操作转化为数字、一元运算!将操作数转化为布尔并取反、*/- 运算符将两边的转化为数字。

可以使用函数在数字和字符串之间做精准的转化:数字到字符串有 toFixed/toExponential/toPrecisioin,字符串到数字有 Number(str)/parseInt(str)/parseFloat(str)/

对象到原始值:到布尔(都返回 true,null 为 false),到字符串 toString->valueOf 的处理顺序,到数字遵循 valueOf->toString() 的处理顺序,获取到原始值时候会停下来用 String/Number 显示转化后返回

不同的操作符(+/-/</==/!=),处理对象的时候转化成原始值,有的可能是数字,有的可能是字符串,比如 [1]+1 = '11'[1]-1 = 0

对象到数字的转化例子:

//[] == 0 的转化过程

[] 
valueOf([]) // []
toString([])  // ''
Number('') // 0

//[2] == 2 的转化过程

[2] 
valueOf([2]) // [2]
toString([2])  // '2'
Number('2') // 2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

醉生梦死

暂无简介

0 文章
0 评论
994 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文