嘿小伙伴们,今天咱们来聊聊一个很有趣的话题——如何判断两个数是不是一样。你可能会想,数学上不就用等于号么?其实编程中有两种方法判断,那就是”==”和”===”,它们都能返回布尔值~
当你的操作数类型都一样时,算术运算就随心所欲。然而,万一两边的变量类型不同或是有对象?你猜怎么着,难度瞬间升级!接下来咱们就来聊聊当操作数类型不同时运算会如何变化。
true === 1 //false "1" === 1 //false //boolean的比较 true === true //true true === false //false //string的比较 "hello" === "helloworrld" //false "hello" === "world" //false "hello" === " hello" //false "hello" === "hellO" //false "hello" === "hello" //true //number的比较 1 === 1 //true 1 === 1.0 //true 1 === 1.2 //false //null和undefined的比较 undefined === undefined //true null === null //true undefined === null //false,两者在"=="时才返回true
好的,我们开始聊聊全等运算符“===”是如何判断的!首先,它会查看操作符两边的数值类型是不是一样,如果不同,那就直接表示false。只有当两方都是同样的数值类型时,“===”才会继续下一步的判断。顺便提一句要是进行对比的两个数都是对象,而非基础类型值的话,那么判断的标准就是看这两个对象是不是完全相等。
var a,b,c; a = b = { name : '柳轻侯', city : '南京' }; c = { name : '柳轻侯', city : '南京' }; a === b //true a === c //false
咋回事?长得一样还不够!举个例子,A跟C这两个家伙,看着就像双胞胎,属性值啥的都一样无二。不过你们猜怎么着?它们根本不是”同一个人”!因为A和C其实是两个分开的玩意儿,没办法说是全等的。
“等号”跟”全等于”的区别在于,如果它们要比对的2个值类型不一样,”等号”就直接说俩货不是同款,完事儿;而”全等于”却会默默地给它们转换个造型,统一成同一种类型,然后才开始比大小。那你可能会有疑问,这俩货怎么换?
记住,转换不同数据类型时要注意以下这些事儿~比如,NaN姐俩儿相等却是给回了咱们“否”的回答!喂,啥叫NaN?那可是“乱七八糟”、无法被具体数值描述的存在这种货色当然不适合参与对比咯!既然都是这么混乱,谁也不知道NaN和NaN到底哪个大,答案自然只能是“没戏”咯!
这里咱们没法用”==”去判断NaN,所以怎么办?我们换个方式,用”!=”试试看。只需要确认这个变量到底是不是跟NaN不相等就行。接着,这回咱们变成要问0可不可以等于”,也就是空字符串喽!你可能不知道,当数字和字符串比大小的时候,系统会自动帮你把字符串换成数字,这时候空白字符”就会变成0。
//如果需要判定一个变量是不是NaN,可以如下 //a是你需要判定的变量 if((typeof a === "number") && a != NaN ){ //此处需要注意,NaN也是number类型 //TODO }
好,快懂了!不管是对象还是非对象,比大小都得先变成基数再说。今天咱们就来说说怎么判断两个东东是不是一样大的问题。学到了啥?首先记住,等于号“b=”会特别严格地看我们的数值类型,而那个等于号(双引号)会自动帮我们转个小弯。另外,那些不靠谱的NaN就不能用等于号来了,得用!=这个感叹号。记住,所有东西比大小都是先变成基本类型再对比。要是还想聊这事儿或者有啥想说的,欢迎在下面留言!别忘了点个赞分享下
null == undefined // true "NaN" == NaN // false 5 == NaN // false NaN == NaN // false NaN != NaN // true false == 0 // true true == 1 // true true == 2 // false undefined == 0 // false null == 0 // false "5" == 5 // true
评论0