个人github博客 github.com/zhuanyongxi…git
在JS中,引用数据类型转换为原始数据类型转换只有三种状况:github
换一种方式来表达,在JS中,全部的数据均可以去转(注意这里的用词,是“转”,不是“转成”)布尔值、数字和字符串(并不必定能成功)。数组
转成布尔值函数
很是简单,除了undefined、null、“”、NaN、0、-0、false以外,全都是true。ui
转成字符串spa
也很是的简单,须要注意的有四个:数组、对象、函数、symbol。code
其实重要的就是数组和对象。对象
function fn() {
console.log("Hello World");
}
console.log(String([1, 2])); // "1,2"
console.log(String({})); // "[object Object]"
console.log(String(fn));
// "function a() {window.runnerWindow.proxyConsole.log(\"Hello World\");}"
console.log(String(Symbol('foo'))); // "Symbol(foo)"
复制代码
转成数字blog
在JS中,转数字比较复杂。经常使用的转换数字的方法有:Number、parseInt和parseFloat。其中Number在转字符串的时候若是遇到有非数字的东西,会返回NaN
,因此也被称为强制转换。另外两个是从左到右一位一位的转换,因此也被成为非强制转换。内存
Number方法
与一元操做符+
的效果相同。即Number("1")
与+"1"
相同。
若是是四则运算,字符串的优先级最高,数字第二。意思就是若是相加的遇到了字符串,则不是字符串的转化为字符串,若是没有字符串,有一个数字,则不是数字的转化为数字。
简化版:
// 1,
1 == "1"; // true
1 == true; // true
// 2,
var obj1 = {}
var obj2 = {}
var obj3 = obj1
obj1 == obj2 // false
obj1 == obj3 // true
// 3,
{} == "{}" // false,对象{}转化为字符串是"[object Object]"
// 4,
null == null // true
undefined == undefined // true
null == undefined // true
"" == null // false
NaN == NaN // false
复制代码