资讯专栏INFORMATION COLUMN

javascript -- == vs ===

BothEyes1993 / 1550人阅读

摘要:判断一个值是否是,只能用来判断如果两个都是字符串,每个位置的字符都一样,那么相等否则不相等。如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。对象转换成基础类型,利用它的或者方法。核心内置类,会尝试先于例外的是,利用的是转换。

javascript-- == vs ===
高级语言层出不穷, 各个语言虽说思想一致,但仍有各自独特的设计理念和语法, js有许多容易让人迷惑的地方
1. == vs ===

等于跟全等在js中很是让人迷惑, 有一个比较有意思的是突然想到在 switch 语句中到底使用的哪种比较方法, 在比较之前先来看看下面的程序, 这下放心了, switch 用的就是 === 方式的比较, 其实在 ESlint 的语法检测中推荐摒弃 == 的写法, 采用 === 的写法规范.

    var a = "1";
    switch (a) {
        case 1:
            console.log("==");
            break;
        case "1":
            console.log("===");
            break;
        default:
    }
    //===

== 和 === 更高层次, 首先来说 === 的比较规则

===比较规则:

1、如果类型不同,就[不相等]
2、如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4、如果两个值都是true,或者都是false,那么[相等]。
5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6、如果两个值都是null,或者都是undefined,那么[相等]

==比较规则:

1、如果两个值类型相同,进行 === 比较。
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
    a、如果一个是null、一个是undefined,那么[相等]。
    b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
    c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
    d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂)
    e、任何其他组合,都[不相等]
== 相对于 === 如果对象类型不同的时候会增加一层自动转化, 在写 js 尽量全部用 ===代替, 可以省去不必要的 bug 陷阱.

另外一个需要注意的是 switch 中的数据类型可以是任意类型, 与 c , java 等有别.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107212.html

相关文章

  • JavaScript 的 4 种数组遍历方法: for VS forEach() VS for/in

    摘要:对于,除非使用箭头函数,它的回调函数的将会变化。使用测试下面的代码,结果如下打印打印要点使用的规则要求所有回调函数必须使用箭头函数。 译者按: JS 骚操作。 原文:For vs forEach() vs for/in vs for/of in JavaScript 译者: Fundebug 本文采用意译,版权归原作者所有 我们有多种方法来遍历 JavaScript 的数组或者...

    joyqi 评论0 收藏0
  • 换一种思维看待PHP VS Node.js

    摘要:提供一种可选的决策方案换一种思维看待决策能够做的事情,也可以,反之也是,所以选择它们很简单,如果公司前端多,就选择,如果公司后端多,就选择,当然这只是个人观点哈。 php和javascript都是非常流行的编程语言,刚刚开始一个服务于服务端,一个服务于前端,长久以来,它们都能够和睦相处,直到有一天,一个叫做node.js的JavaScript运行环境诞生后,再加上PHP的swoole扩...

    Michael_Lin 评论0 收藏0
  • [译]React 元素 vs React 组件 vs 组件支撑实例

    摘要:元素和组件实例都不表示真实元素。我希望这篇文章能够帮助你理清这些术语参考资料翻译成支撑实例来自于理解中方法创建组件的声明式编程和命令式编程的比较对循环提示增加的研究精髓之一算法 本篇为译文,原文出处:React Elements vs React Components vs Component Backing Instances 许多人可能听说过 Facebook 的 React 库,...

    gnehc 评论0 收藏0
  • 高效开发者是如何个性化VS Code插件与配置的?

    摘要:由于本身不能个性化配置,有时可能会引起不适,但是至少保证团队成员可以轻易统一代码风格。就是将多于一个字母的合成一个字形。自从年双十一正式上线,累计处理了亿错误事件,得到了金山软件等众多知名用户的认可。 译者按: IDE是生产力的保证! 原文:Visual Studio Code Settings and Extensions for Faster JavaScript Develop...

    shenhualong 评论0 收藏0
  • vs code 插件折腾记(一)

    摘要:以下简称是微软开发同时支持和系统且开放源代码的代码编辑器,并且是开源免费使用的,也是当下最受欢迎的代码编辑器之一官网下载地址文章已更新插件折腾记二经过我一段时间的使用,发现一些插件是必不可少的,现在给大家推荐一些非常实用的插件下载好安装打开 Visual Studio Code(以下简称vs code) 是 微软开发同时支持Windows、Linux、和macOS系统且开放源代码的代码...

    lidashuang 评论0 收藏0
  • vs code 插件折腾记(一)

    摘要:以下简称是微软开发同时支持和系统且开放源代码的代码编辑器,并且是开源免费使用的,也是当下最受欢迎的代码编辑器之一官网下载地址文章已更新插件折腾记二经过我一段时间的使用,发现一些插件是必不可少的,现在给大家推荐一些非常实用的插件下载好安装打开 Visual Studio Code(以下简称vs code) 是 微软开发同时支持Windows、Linux、和macOS系统且开放源代码的代码...

    vslam 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<