隐式转换:
“23”-23=0
“23”+23=2323
巧用+/-规则转换类型:
转数字:num-0 转字符串:num+‘’
严格等于:a===b(NaN与任何类型比较都不相等,包括他自己),首先判断类型
等于:==会进行隐式转换
js的隐式转换(+和-)
巧用+/-: 如果要把一个字符串变数字,用字符串-0 如果把数字变字符串,用数字+0
a===b(类型和数值都相同)
NAN≠NAN new Object ≠ new Object
a==b
null == undefined number == string 转number(1==“1.0”)
Boolean == ?转number(1==true)
object == number|string 尝试将对象转为基本型 new String('hi') == 'hi'
将变量num变成数字: num - 0
将变量num变成字符串:num + ''

//隐士转换
undefined
num = 10;
10
num-""
10
num + ''
"10"
num-''
10
//==的运算
undefined
//在用==时候会把类型进行一定程度的转换
undefined
'1.23' = 1.23
VM2590:1 Uncaught SyntaxError: Invalid left-hand side in assignment
'1.23' = 1.23;
VM2597:1 Uncaught SyntaxError: Invalid left-hand side in assignment
'1.23' == 1.23;
true
0==false
true
null==undefined
true
new Object() = new Object();
VM2750:1 Uncaught SyntaxError: Invalid left-hand side in assignment
new Object() == new Object();
false
//严格等于
undefined
//会先判断类型是否相等,如果不相同返回false,相等的话,要注意这个时候null和undefined不想等了,但是NaN是和任何的东西包括他自己都不想等的
undefined
5675:1 Unchecked runtime.lastError: The message port closed before a response was received.
//还要注意就是在相似的时候只是简单进行类型的转换,而到了严格等于的时候就要求进行在没有转换的情况下依旧想等
undefined
[1,2] == [1,2];
false
//上面的很奇怪对不对,其实是不想等的,就和两个new Object一样,都是不能相等的,即便==
undefined
//比较重要的一点是==和===的区别,当类型相同的时候二者是没有区别的,但是当类型不同的时候首先情况下是,当number和string比较的时候,会把string转换成number,将对象转换成相应的基本类型
两个空对象是不会===的,除非x===x
隐式转换:
==
null == undefined
string == number,会尝试将string转化为number
boolean == ?,先将boolean转化为数值
+:拼接
-:数值运算
隐式转换
“37”-7 //30,-号表示数值加减,结果数值
“37”+7 //377,+号表示字符串拼接,结果字符串
巧用+/-规则转换类型 num-0 num+''
严格等于===
类型不同返回false
NaN!=NaN NaN与任何类型都不相等,包括它本身
对象通过引用去比较

== 运算
字符串 == 数字 (会将字符串转换为数字)
0 == false (boolean和其他值比较时,先将boolean转换数字再进行比较,这里将false转换为0比较)
null == undefined (在js规范中提到null 和 undefined在比较相等性之前不能将其转换为任何值,规定他们是相等的,并且都代表无效值)
js中 + -运算
字符串 + 数字 = 字符串(字符串拼接) 可用于将数字+"" 转为字符串
字符串 - 数字 = 数字 (数学运算)可用于将数字字符串-0 转为数字
object == number | string尝试对象转为基本类型
new String('hi') == 'hi'
JavaScript会自动进行隐式转换.
如果两边
number == string ,这种情况下,会尝试把string转换为number
boolean == number,这种情况下,会尝试把boolean类型转换为0或1.false为0,true为1.
new Object() 不等于 new Object()
因为这是两个不同的对象
"1.23" == 1.23
0 == false
null == undefined
JavaScript中的变量是隐式的,可以
num - 0
num + ""变为 字符串类型
这里需要着重看一下关于对象的valueOf 和 toString方法
双等的各种变换.
null == undefined //相等
number == string (转number)
boolean == ? 转number 1==true? //true!
object == number|string 尝试对象转为基本类型
NaN == NaN //false
NaN === NaN //false
环境(Node==v12.13.0)
"1.23' == 123 //true
0 == false //true
null == undefined //true
new Object() == new Object() //false
[1,2]==[1,2] //false => 通过这两个 感觉对对象的==还是比较靠谱啊(地址比较)
变量 - 0 ==> 将变量转换为数字(如果无法转换将得到NaN
==和===
NaN和任何比较都不相等,包括和它自己比较也不相等
巧用+/-规则转换类型
num转换为数字:num-0
num转换为字符串:num+' '
隐式转换:
1.==
null == undefined
string == number,会尝试将string转化为number
boolean == ?,先将boolean转化为数值
2.===
null === null
undefined ===undefined
NaN ≠NaN
隐式转换:
字符+数字=字符串
字符-数字=0
字符==数字 会隐式转换
=== 显示判断类型
- 字符串的剑法运算
+ 字符串之间的拼接
null === null