JavaScript中==和===详解

    比较两个变量是否相等时,有==和===两种方式。

    ==的工作模式是,判断两边的变量是否为同种类型,如果不是同种类型则需要转变类型,再比较是否相等。===的工作模式是,判断两种类型是否为同种类型,如果是同种类型判断是否相等,不是同种类型就认为不相等。举例说明:

var a = "42";

var b = 42;

a = 42; //true,先将a转换成数字42,再比较

    也有人将==比作松散相等(值相等即可),将===比作绝对相等(类型和值都相等),===不多说什么,只阐述==。

一、声明规则

    重要的是,当==两边类型不同时,转换规则是什么。我们都知道,通过typeof()判断变量类型可能返回六种形式:number,string,boolean,object,undefined

    那么如果==两边类型不同,转换规则如下:一旦一边有数字则另一边试图转换为数字,一旦一边有数字则另一边试图转换为数字,凡事布尔都会转换成数字,,null和undefined另外讲。下面一点点将来

>代表转换成的意思

1 == "1"; //true "1">1

1 == new String("1"); //true obj>"1">1

1 == []; // false []>"">0,不相等

1 == [1]; //true,[1]>"1",>1

1 == [1,2]; //false [1,2]>"1,2">NaN,而NaN和谁都不相等

0 == [1,2]; //false 

1 == true; //true  true>1

0 == {};  // false  {}>常规对象>NaN,和谁都不等

这里涉及到一个问题,字符串转数字时,常规数字字符串转成数字,非常规转成NaN,如:

Number("123"); // 123

Number("1,2"); // NaN

二、null和undefined

null == undefined ; // true,这个东西特殊,记住吧

三、关于是否一定要用===

一直认为===准确度高,效率也会高,然而会增加代码复杂度,例如:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,730评论 0 13
  • 值类型转换将值从一种类型转换为另一种类型通常称为类型转换,这是显示的情况;隐式的情况称为强制类型转换。JavaSc...
    xpwei阅读 8,998评论 0 5
  • 特别说明,为便于查阅,文章转自https://github.com/getify/You-Dont-Know-JS...
    杀破狼real阅读 3,388评论 0 0
  • 感赏自己在儿子脾气不去房间睡觉,选择不理会他不指责他,儿子他过会就自己去睡 投射儿子节制玩游戏,爱上学习 感赏儿子...
    吴若阅读 1,558评论 0 0
  • 初遇湘西,是和你一起去的,那时的我们,是彼此最像的模样。 湘西凤凰县是文学大师沈从文的故乡,曾有“中国最美的小城”...
    拉茶阅读 5,033评论 19 29

友情链接更多精彩内容