個人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
複製代碼