"=="的自动转换javascript
自动转换优先级:number>boolean>String,越小越先转换java
console.log(0==false); //true console.log(1==true); //true console.log(2==true); //flase //这个过程实际上是Boolean类型转换为数字的过程
console.log(""==0); //true console.log("12"==12); //true console.log("12a"==12); //false //String自动转换时只能转换纯数字的字符串
console.log(""==false); //true console.log("s"==true); //true //字符串转换为boolean均为true
null的本质是空对象,自动转换时会处理空对象的引用地址,转换为数字与其余对象的处理git
console.log(null==0); //false //地址是数字,且确定不是0 console.log(null==false); //false console.log(null==true); //false //地址是数字,比较时会将boolean转换为数字 console.log(null=="null"); //false console.log(null==""); //false //地址为数字,比较时会将String转换为数字
undefined表示未定义,不带任何东西,你们能够理解为老顽固(偷笑)github
console.log(undefined==0); //false //没法自动转换数字 console.log(undefined==false); //false console.log(undefined==true); //false //没法自动转换boolean console.log(undefined==""); //false console.log(undefined=="undefined"); //false //没法自动转换为String console.log(undefined==null); //true console.log(undefined===null); //false //null是空对象,会被认为是undefined,但严格的来讲二者是不相等的
"+"会尝试将两端的值尝试转换为字符串或数字。优先级:String>Number函数
console.log(1+false); //1 console.log(1+true); //2
console.log(""+1); //"1" console.log("1"+1); //"11" //运算时,String优先级大于Number,Number转换为String
console.log(""+false); //false console.log(""+true); //true console.log(typeof(""+true)); //String //按照优先级,会将boolean转换为String
console.log(null+1); //1 //null的本质是空对象,强制转换会转换为0
console.log(undefined+0); //NaN //强制转换数字时为NaN console.log(Boolean(undefined)); //false
String: 这里说下String()和toString()的区别 toString()能够将除了null、undefined之外的一切对象转换为String,且toString()能够接收第二个参数,将字符串的进制进行改变 String()能够将任何对象转换为String,String只有一个传参 Boolean: console.log(Boolean(0)); //false console.log(Boolean(1)); //true console.log(Boolean(2)); //true console.log(Boolean(-2)); //true //除0之外均为true
Number: console.log(Number("1")); //1 console.log(Number("1a")); //NaN console.log(parseInt("1a")); //1 console.log(parseInt("a1")); //NaN //使用Number进行转换时必须是纯数字字符串,不然为NaN //使用parseInt转换时,头部必须有数字,不然为NaN //parseInt是全局函数,不属于Number,与Number强制转换有区别 Boolean: console.log(Boolean("")); //false console.log(Boolean("true")); //true console.log(Boolean("false")); //true //String为空是flase,其余均为true
Number: console.log(Number(false)); //0 console.log(Number(true)); //1 String: 输出对应的字符串
Number: console.log(Number(null)); //0 String: 输出对应的字符串 Boolean: console.log(Boolean(null)); //false
Number: console.log(Number(undefined)); //NaN //此种方式强制转换依旧为非数字 String: 输出对应的字符串 Boolean: console.log(Boolean(undefined)); //false
码字不易,后面还会放出各类文章,喜欢的关注一下我吖,大家的关注是我最大的动力spa
github:github.com/hn-failtecode
我的博客:hn-failte.github.io对象