-
Number conversions
-
String conversions
-
Boolean conversions
-
对象的类型转换

类型强制转换都是好的吗?
在上述情况下,类型转换没有害处。 但是,在许多情况下,类型强制会导致问题。

我们看下面例子。

在这里,JavaScript已将Number类型转换为String。 这与相等比较中发生的情况相反。 我们预期的结果是450。但是,我们得到了String输出。
现在,我们对类型转换以及为什么要避免使用类型转换有了清晰的了解,让我们看看如何避免类型转换。 这是本文最重要的部分。 因此,请坐下来,喝咖啡并集中精力😃
如何避免 JavaScript 类型转换
1. 对数学运算使用显式转换
如果你需要对用户输入或任何其他值使用数学运算,则在执行该运算之前,自己进行一次显式转换会更安全。 这样,可以避免任何意外行为。

2. 使用模板字面值连接字符串,而不是+
如果需要连接两个数字,则使用模板文字会更安全。 特别是不确定值的类型。

也可以使用显式转换来导出相同的结果。

3.当比较值时,使用严格的比较(===)
前面我们看到,当使用==时,JavaScript 会执行隐式类型转换,这会导致不一致的结果。因此,在我们的生产代码中使用它是不安全的。
为了得出预期的结果,应该始终使用===进行比较。 三等号隐含地表示:
我可以同时了解变量的值和类型
因此,如果将数字和字符串与值进行比较,结果将是false,因为它也会考虑变量的类型。

这是获得预期一致结果的更安全的方法。
在JavaScript中,数据类型有两种变体。
-
原始值(字符串、数字等)
-
非原始值(数组、对象)
到目前为止,我们已经讨论了原始数据类型的类型转换。 我提供的第一个示例涉及非原始数据类型,例如数组。
所有非原始数据类型都有一个名为.toPrimitive()的内置函数。 比较非原始值和原始值时,此函数会自动将非原始类型转换为原始类型。 在我们看过的第一个示例中,当使用此函数进行非严格比较时,空数组将转换为空字符串。 确切地说,用于执行此转换的确切函数是toString()。 因此,空数组(将转换为空字符串)等于0。

正如我们前面所看到的,当在if条件中检查空数组时,将执行条件中的行。 但是,如果空数组隐式转换为0怎么办?
这是在单独的JavaScript条件下进行的: 真值和虚值 。 除了true以外,JavaScript 将大部分有值的视为真值,除了少数值。 例如,0,-0,""被视为虚值。由于空数组不被认为是虚值,当在条件中检查它时,它将作为真值执行。(这里不会发生类型转换,空数组保留为数组,这是类型转换不一致的另一个例子。)

总结
JavaScript作为一种松散类型语言,执行隐式类型转换。这会导致不一致和意想不到的结果。因此,我们应该在任何时候都避免这种类型转换。如果不确定值的类型,可以使用typeof检查。检查类型可以让我们更好地理解应该如何进行转换。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。


既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后
一个好的心态和一个坚持的心很重要,很多冲着高薪的人想学习前端,但是能学到最后的没有几个,遇到困难就放弃了,这种人到处都是,就是因为有的东西难,所以他的回报才很大,我们评判一个前端开发者是什么水平,就是他解决问题的能力有多强。
分享一些简单的前端面试题以及学习路线给大家,狂戳这里即可免费领取

为有的东西难,所以他的回报才很大,我们评判一个前端开发者是什么水平,就是他解决问题的能力有多强。
分享一些简单的前端面试题以及学习路线给大家,狂戳这里即可免费领取
[外链图片转存中…(img-L1QlFtN1-1713772131269)]

文章探讨了JavaScript中的类型转换,尤其是在比较和运算时可能带来的问题。作者强调了避免隐式类型转换的重要性,并提供了使用显式转换、模板字面值和严格比较的建议,以确保代码的一致性和可预测性。

被折叠的 条评论
为什么被折叠?



