js中【=】和【==】以及【===】有啥区别?分别应用在什么情况下?

JavaScript016

js中【=】和【==】以及【===】有啥区别?分别应用在什么情况下?,第1张

=是赋值运算符,==是关系运算符===是全等运算符

”==”是判断值是否相等,

”===”是判断值及类型是否完全相等。

”==”比较时会进行类型转换,“===”则不会

例如:

alert('55' == 55)      //true

alert('55' === 55)  //false

js中存在 == 和 === 两种校验是否相等的运算符。

由于双等号的存在,使用中会存在一些问题,例如:

重读前端中列出了双等号的转换方式:

有时候不知道会拿到什么类型的数据时,为了严格的控制数据类型和可能存在的状况bug,还是建议用三等来判断,把拿到的不确定数据都进行类型转换之后再做比较。

目前js设计中的存在了早期的不合理设计,在 JavaScript 设计原则“don’t break the web”之下,已经无法修正了,这种可控类型问题可以考虑用typescript解决,团队的规范也建议停用双等号以减少出现bug的几率。

=,赋值运算符,即给变量赋予某个取值或内存地址。比如var a = 3,即给变量a赋值为3,再比如var obj = {},就是把对象{}的地址赋值给obj。

==,比较运算符,检测两个值是否相等。比如var a = 1,则a == 1的结果就是true。需要注意的是,==运算符两边数据类型不一致时可能会发生数据类型转换,比如,同样前面的a,表达式a == '01',第一眼看上去并不相等,但因为在比较a与'01'时,js将字符串'01'转换为数字1,所以a == '01'的结果还是true。

===,比较运算符,基本上===与==的功能一样。区别在于,===不会发生类型转换,数字就是数字,类型就是类型,如果===两边的操作符类型就不一致,那么这个表达式的结果一定是false。