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

原文链接:周大侠啊 进击的 JavaScript(一) 之 类型转换

说起 js 类型转换,都是头疼吧,晕晕的,但是不行啊,这东西很重要滴! 基础知识

JavaScript的数据类型分为六种,分别为null, undefined, boolean, string, number, object。

object是引用类型,包含数组,其它的五种是基本类型或者是原始类型(原始值)。

我们可以用typeof方法打印来某个是属于哪个类型的。不同类型的变量比较或者运算,要先转类型,叫做类型转换。

注意,typeof null 返回 "object",它是一个特殊的对象值,含义是“非对象”。实际上,我们通常认为null是自有类型的唯一成员。




一、显式转换

parseInt()和parseFloat() 字符串转数字

js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。

parseInt():

parseInt("1234blue"); //1234 parseInt("0xA"); //10 parseInt("22.5"); //22 parseInt("blue"); //NaN

parseInt()方法还有第二个参数,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。所以要解析十六进制的值,需如下调用parseInt()方法:

parseInt("AF", 16); //175

当然,对二进制、八进制,甚至十进制(默认模式),都可以这样调用parseInt()方法:

parseInt("10", 2); //2 parseInt("66", 8); //54 parseInt("10", 10); //10

parseFloat字符串转浮点数字,没有第二个参数
下面是使用parseFloat()方法的示例:

parseFloat("1234blue"); //1234.0 parseFloat("0xA"); //NaN parseFloat("22.5"); //22.5 parseFloat("22.34.5"); //22.34 parseFloat("0908"); //908 parseFloat("blue"); //NaN

toFixed() 数字转成字符串

根据参数保留小数点后几位 会四舍五入,如果无参,默认为0;
例:

(66.55).toFixed(); //"67" (66.64).toFixed(1); //"66.6"

toExponenttial() 数字转成字符串

根据参数保留小数点后几位 指数形式 会四舍五入
这个我不就不举例了,感兴趣的,自己百度下把。

Number对象的 toString() 方法, 数字转字符串

根据2 8 16 (范围2 - 36)分别转为二进制 八进制 十六进制字符串,,
不带参,就默认为10, 转十进制。
例:

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

下面三个构造函数,当没有使用 new 时,表示类型转换函数,使用new 时,表示转对象(创建一个对应对象),即转换得到的值 创建一个对应的对象。

Boolean()

它会把 “真值” 转为 true , “假值” 转为 false。

Boolean()方法的示例:

Boolean(""); //false “假值” Boolean("zdx"); //true “真值” Boolean(66); //true “真值” Boolean(null); //false “假值” Boolean(0); //false “假值” Boolean(new Object()); //true “真值”

Number()

有以下规律:

false、null、""、[],转为0

true , 转1

数字转数字

全是数字的字符串转数字
//(如果是有效十六进制 会 转十进制数字)例:Number("0xf") //15

数组内全是数字(不能有逗号)转数字

数组内字符串全是数字(不能有逗号)转数字

其他都是 NaN

其实从 第五条那个开始,严谨一点是:
对象类型,先调用valueOf() 方法,然后按照前四点转换返回的值。如果返回的值不是原始类型,则调用toString()方法,再按前四点转换返回的值。

大栗子:

Number(false); //0 Number(null); //0 Number(""); //0 Number([]); //0 Number(true); //1 Number("66"); //66 Number("66f"); //NaN Number(new Object()); //NaN Number([66]); //66 Number(["66"]); //66 Number([6,6]); //NaN Number(["6f6"]); //NaN

String()

String()可把任何值转换成字符串。它就是调用传进参数的 toString()方法。使用String()转换成字符串和调用toString()方法的唯一不同之处在于,对null或undefined值转换可以生成字符串而不引 发错误:

String()方法的示例:

String(null); //"null" var null = null; null.toString(); //报错 String(undefined); //"undefined"

Object()

这个函数,使用 和 不使用 new 是一样的。

它会把原始值,根据它的类型,使用对应的构造函数,创建一个对象。null 和 undefined 和创建一个空对象。

Object(66); //数字对象,等于 new Number(66) Object("66"); //字符串对象,等于 new String("666") Object(true); //布尔对象, 等于 new Boolean(true) Object(null); //空对象,等于 new Object() Object(undefined); //空对象,等于 new Object()




二、隐式转换




(一)、所有类型 转为 布尔

JavaScript 的基础类型中 有布尔类型,这个类型的值,只有两个值---- true 和 false

任意的JavaScript 的值都可以转换为布尔值。但只有下面这六个值会转为false:

"" 0 -0 null undefined NaN

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

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