资讯专栏INFORMATION COLUMN

浅谈JS中的数据类型转换

CarlBenjamin / 2760人阅读

摘要:关于中的各种数据类型的简单转换。转换为布尔值全局方法方法注意要区分空字符串和有空格的字符串。如果预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。常规转换取反两次,对应的布尔值不变。

关于JavaScript中的各种数据类型的简单转换。

转换为字符串 toString

可以用toString这个API将其他数据类型转换为字符串,其中也有一些特例。

var a = 1;
a.toString;
//"1"

var b = true;
b.toString;
//"true"

将数字和布尔值转化为字符串。

var c = null;
c.toString;
//Uncaught TypeError: Cannot read property "toString" of null

var d = undefined;
d.toString;
//Uncaught TypeError: Cannot read property "toString" of undefined

nullundefined并没有toString这个API,所以会报错。不可以这样使用。

var obj = {age : 18};
obj.toString();
//"[object Object]"

objecttoString方法并不能得到你想要的结果。除非你自己设法去编写一个自定义函数。

全局方法

使用全局方法window.String,等同于xxx.toString

window.String(1);
//"1"

window.String({});
//"[object Object]"

nullundefined也可以使用这个全局方法。

window.String(null);
//"null"

window.String(undefined);
//"undefined"
console.log

console.logAPI可以将数据输出为字符串。

console.log(1);
//1

这里console.log中的1其实是"1",等同于

console.log((1)toString);
//1

输出结果的1其实也是"1",这是在Chrome测试台的输出结果,没有按规则显示而已。
在很多地方,如果需要字符串的数据,会自动调取这个API。

常规转换

最简单的转换方式,与空字符串""相加+

1 + ""
//"1"

true + ""
//"true"

var obj = {}
obj + ""
//"[object Object]"

null + ""
//"null"

undefined + ""
//"undefined"

+如果左右两边有字符串,那总是会尽可能把结果变为字符串。

"1" + 1
//"11"

(1)toString() + "1"
//"11"

这样使用会出现意想不到的结果。两者是等价的。

转换为布尔值 全局方法

window.Boolean方法

window.Boolean(0);
//false

window.Boolean(1);
//true

window.Boolean({});
//true

注意要区分空字符串和有空格的字符串。

window.Boolean("");
//false

window.Boolean(" ");
//true

如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。
转换规则是除了下面七个值被转为false,其他值都视为true

0

null

undefined

NaN

false

""

""

又叫做falsy值。是在Boolean上下文中认定可以转化为false的值。

常规转换

!!取反两次,对应的布尔值不变。

!!0
//false

!!null
//false

!!{}
//true
转换为数字

大概有几种方法

window.Number("105");
//105

window.parseInt("105",10);
//105
//10表示进制

window.parseFloat("1.05");
//1.05

"105" - 0;
//105

+ "105"
//105

+ "-105"
//-105

- "105"
//-105

- (- "105");
//105
关于parseInt

若不写明进制,则默认为十进制。

parseInt("011");
//11

parseInt("011",8);
//9

而且从第一位开始返回,若遇到无法返回的值,则自动结束。
若一位也无法返回,则为NaN

parseInt("1s");
//1

parseInt("ss");
//NaN



文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100167.html

相关文章

  • 浅谈:快速理解JS的原型与原型链

    摘要:中有基本类型和复杂类型的区分。原型与原型链这里,就引入了两个新的概念。原型对象就是用来存放声明对象中共有的那部分属性。而原型对象自身也是一个对象,它也有自己的原型对象。这样层层上溯,就形成了一个类似链表的结构,这就是原型链。 JavaScript中有基本类型和复杂类型的区分。 当我们在声明一个基本类型时: var n1= 1; console.log(n1); //1 这时我们可以用N...

    ZoomQuiet 评论0 收藏0
  • 浅谈JavaScript的浅拷贝与深拷贝

    摘要:引用数据类型是存放在堆内存中的,变量实际上是一个存放在栈内存的指针,这个指针指向堆内存中的地址。栈和堆的区别其实浅拷贝和深拷贝的主要区别就是数据在内存中的存储类型不同。这里,对存在子对象的对象进行拷贝的时候,就是深拷贝了。 数据类型 在开始拷贝之前,我们从JavaScript的数据类型和内存存放地址讲起。数据类型分为基本数据类型 和引用数据类型 基本数据类型主要包括undefin...

    娣辩孩 评论0 收藏0
  • 浅谈隐式类型转换与显示类型转换的那些事

    摘要:隐式类型转换类型转类型先定义一个类型的变量只要类型跟类型还是类型用号,其他类型都会被转为字符串输出结果字符串类型转类型或者类型定义类型的变量与类型的变量前端从测试结果可以看出,类型在跟数字类型做乘除减运算时,得到的是数字类型的值,但是类型必 隐式类型转换 number类型转string类型 //先定义一个number类型的变量 //只要string类型跟boolean类型还是numbe...

    atinosun 评论0 收藏0

发表评论

0条评论

CarlBenjamin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<