摘要:关于中的各种数据类型的简单转换。转换为布尔值全局方法方法注意要区分空字符串和有空格的字符串。如果预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。常规转换取反两次,对应的布尔值不变。
关于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
null和undefined并没有toString这个API,所以会报错。不可以这样使用。
var obj = {age : 18};
obj.toString();
//"[object Object]"
object的toString方法并不能得到你想要的结果。除非你自己设法去编写一个自定义函数。
全局方法使用全局方法window.String,等同于xxx.toString。
window.String(1);
//"1"
window.String({});
//"[object Object]"
null和undefined也可以使用这个全局方法。
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
摘要:中有基本类型和复杂类型的区分。原型与原型链这里,就引入了两个新的概念。原型对象就是用来存放声明对象中共有的那部分属性。而原型对象自身也是一个对象,它也有自己的原型对象。这样层层上溯,就形成了一个类似链表的结构,这就是原型链。 JavaScript中有基本类型和复杂类型的区分。 当我们在声明一个基本类型时: var n1= 1; console.log(n1); //1 这时我们可以用N...
摘要:引用数据类型是存放在堆内存中的,变量实际上是一个存放在栈内存的指针,这个指针指向堆内存中的地址。栈和堆的区别其实浅拷贝和深拷贝的主要区别就是数据在内存中的存储类型不同。这里,对存在子对象的对象进行拷贝的时候,就是深拷贝了。 数据类型 在开始拷贝之前,我们从JavaScript的数据类型和内存存放地址讲起。数据类型分为基本数据类型 和引用数据类型 基本数据类型主要包括undefin...
摘要:隐式类型转换类型转类型先定义一个类型的变量只要类型跟类型还是类型用号,其他类型都会被转为字符串输出结果字符串类型转类型或者类型定义类型的变量与类型的变量前端从测试结果可以看出,类型在跟数字类型做乘除减运算时,得到的是数字类型的值,但是类型必 隐式类型转换 number类型转string类型 //先定义一个number类型的变量 //只要string类型跟boolean类型还是numbe...
阅读 3560·2023-04-26 02:10
阅读 3156·2021-10-12 10:12
阅读 5181·2021-09-27 13:35
阅读 1754·2019-08-30 15:55
阅读 1291·2019-08-29 18:37
阅读 3641·2019-08-28 17:51
阅读 2172·2019-08-26 13:30
阅读 1451·2019-08-26 12:09