周大侠啊 进击的 JavaScript(一) 之 类型转换 (4)

举个大栗子:

//1. undefined等于null undefined == null; //ture //2. 字符串和数字比较时,字符串转数字 "0" == 0; //true "f" == 0; //false //字符串转数字时,只有在字符串是纯数字时,转对应数字,其他都转为 NaN。 // 3. 字符串和布尔比较时,都转为数字 "0" == false; //true "1" == true; //true //4. 数字和布尔比较时,布尔转数字 1 == true; //true 0 == false; //true //true 转 1, false 转0; //5.对象 和 字符串,数字比较, 都转数字。 new String("66") == "66"; //true new String("zdx") == "zdx"; //false new String("66") == 66; //true === 的用法

这个比较,首先,看两边类型是否一致,不一致, 直接false,一致的话,再根据 == 的使用规则, 进行比较。



(6)!= 和 !==

这两个 运算 跟 取反(!) 操作是 不一样 的!,注意区分。

这两个运算,是在 == 和 === 比较过后的结果,进行取反(就是对 true 和 false 取反,因为,== 和 === 的返回值 只有 true 和 false)。

简单栗子:

"0" == 0; //true "f" === 0; //false "0" != 0; //false "f" !== 0; //true




(7)&&、||

&& 逻辑与

如果两侧都是布尔值, 进行布尔(AND)运算。

否则它会先计算左侧表达式,如果为 “假值”,返回这个值,如果是“真值”,计算右侧表达式,并返回计算结果。

看:

true && false; //false 1 && 2; //2 null && 2; //null 1-1 && 2; //0 2-1 && 0; //0

所以,有时候就会这样写代码:

if( a==b ) start(); a == b && start(); //效果同上

|| 逻辑或

它跟 && 的行为是一样的,只是它的做的是布尔(OR)运算,返回的情况相反

如果两侧都是布尔值, 进行布尔(OR)运算。

否则它会先计算左侧表达式,如果为 “真值”,返回这个值,如果是“假值”,计算右侧表达式,并返回计算结果。

true || false; //true 1 || 2; //1 null || 2; //2 1-1 || 2; //2 2-1 || 0; //1




(8)if 语句

它会计算操作数(括号里)的值,把结果转为布尔类型。“真值” 表现为true , “假值” 表现为false。

if(3-2){ console.log(666) } //666




附录 一、Object

1、valueOf
返回对象本身。

({x:1,y:2}).valueOf(); //{x: 1, y: 2},返回的是对象!

2、toString
返回 "[object type]",其中type是对象的类型。

//这里使用函数的call方法,指定 this的指向 var toString = Object.prototype.toString; toString.call(new Date); // [object Date] toString.call(new String); // [object String] toString.call(Math); // [object Math] toString.call(undefined); // [object Undefined] toString.call(null); // [object Null]




二、Boolean

1、valueOf
返回布尔值。

(true).valueOf(); //true , 返回的是原始值,Boolean类型

2、toString
返回该对象的字符串形式。

(true).toString(); //"true",返回的是原始值,string类型




三、Date

1、valueOf
返回存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。

(new Date()).valueOf(); //1525943413141 一串数字

2、toString
返回一个美式英语日期格式的字符串.

(new Date()).toString(); //"Fri May 11 2018 10:26:16 GMT+0800 (中国标准时间)" 原始值,string类型




四、Number

1、valueOf
返回数字值。

(66).valueOf(); //66 返回的是原始值,Number类型

2、toString
返回的是原始值,String类型
根据2 8 16 (范围2 - 36)分别转为二进制 八进制 十六进制字符串,,
不带参,就默认为10, 转十进制。
例:

(66).toString(2); //"1000010" (66).toString(8); //"102" (66).toString(16); //"42"




五、String

1、valueOf
返回字符串值。

("666").valueOf(); //"666" 返回的是原始值,String类型 ("zdx").valueOf(); //"zdx" 返回的是原始值,String类型

2、toString
和valueOf 效果一样,返回字符串值。

("666").toString(); //"666" 返回的是原始值,String类型 ("zdx").toString(); //"zdx" 返回的是原始值,String类型




六、Array

1、valueOf
自身没有该方法,继承Object.prototype.valueOf。返回的是数组对象!

([1,2,3]).valueOf(); //(3) [1, 2, 3],

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyzwj.html