文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么避免JavaScript类型转换

2024-04-02 19:55

关注

本篇内容介绍了“怎么避免JavaScript类型转换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

你是否经历过JavaScript中的某些值比较没有得到预期结果的情况?

看下面的情况:

怎么避免JavaScript类型转换

即使[]==0结果为真,if[]条件也没有根据结果执行。有没有想过为什么会这样?

本文主要说明这些值比较的工作原理以及影响它们的因素。在深入解释之前,大家要熟悉一个概念:类型转换。

什么是 JavaScript 类型转换?

这也称为类型强制。对于不熟悉此概念的人来说,它只是将值从一种数据类型自动转换为另一种数据类型。

看个例子,大家会更清楚明白。

怎么避免JavaScript类型转换

在此示例中,定义的两个变量具有两种类型;字符串和数字。但是,当我们使用  ==(非严格比较)进行比较时,结果为true。原因是当我们使用==比较这两个时,JavaScript  会自动尝试将String类型转换为Number类型以产生结果。这是一种强制转换。

JavaScript中有多种强制类型。

怎么避免JavaScript类型转换

类型强制转换都是好的吗?

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

怎么避免JavaScript类型转换

我们看下面例子。

怎么避免JavaScript类型转换

在这里,JavaScript已将Number类型转换为String。这与相等比较中发生的情况相反。我们预期的结果是450。但是,我们得到了String输出。

现在,我们对类型转换以及为什么要避免使用类型转换有了清晰的了解,让我们看看如何避免类型转换。这是本文最重要的部分。因此,请坐下来,喝咖啡并集中精力??

如何避免 JavaScript 类型转换

1. 对数学运算使用显式转换

如果你需要对用户输入或任何其他值使用数学运算,则在执行该运算之前,自己进行一次显式转换会更安全。这样,可以避免任何意外行为。

怎么避免JavaScript类型转换

2. 使用模板字面值连接字符串,而不是+

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

怎么避免JavaScript类型转换

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

怎么避免JavaScript类型转换

3.当比较值时,使用严格的比较(===)

前面我们看到,当使用==时,JavaScript 会执行隐式类型转换,这会导致不一致的结果。因此,在我们的生产代码中使用它是不安全的。

为了得出预期的结果,应该始终使用===进行比较。三等号隐含地表示:

我可以同时了解变量的值和类型

因此,如果将数字和字符串与值进行比较,结果将是false,因为它也会考虑变量的类型。

怎么避免JavaScript类型转换

这是获得预期一致结果的更安全的方法。

在JavaScript中,数据类型有两种变体。

到目前为止,我们已经讨论了原始数据类型的类型转换。我提供的第一个示例涉及非原始数据类型,例如数组。

所有非原始数据类型都有一个名为.toPrimitive()的内置函数。比较非原始值和原始值时,此函数会自动将非原始类型转换为原始类型。在我们看过的第一个示例中,当使用此函数进行非严格比较时,空数组将转换为空字符串。确切地说,用于执行此转换的确切函数是toString()。因此,空数组(将转换为空字符串)等于0。

怎么避免JavaScript类型转换

正如我们前面所看到的,当在if条件中检查空数组时,将执行条件中的行。但是,如果空数组隐式转换为0怎么办?

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

怎么避免JavaScript类型转换

总结

JavaScript作为一种松散类型语言,执行隐式类型转换。这会导致不一致和意想不到的结果。因此,我们应该在任何时候都避免这种类型转换。如果不确定值的类型,可以使用typeof检查。检查类型可以让我们更好地理解应该如何进行转换。

“怎么避免JavaScript类型转换”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯