我的github部落格 github.com/zhuanyongxi…
在js中,引用資料型別轉換為原始資料型別轉換只有三種情況:
換一種方式來表達,在js中,所有的資料都可以去轉(注意這裡的用詞,是「轉」,不是「轉成」)布林值、數字和字串(並不一定能成功)。
轉成布林值
非常簡單,除了undefined、null、「」、nan、0、-0、false之外,全都是true。
轉成字串
也非常的簡單,需要注意的有四個:陣列、物件、函式、symbol。
其實重要的就是陣列和物件。
function
fn()
console.log(string([1, 2])); // "1,2"
console.log(string({})); // "[object object]"
console.log(string(fn));
// "function a() "
console.log(string(symbol('foo'))); // "symbol(foo)"
複製**
轉成數字
在js中,轉數字比較複雜。常用的轉換數字的方法有:number、parseint和parsefloat。其中number在轉字串的時候如果遇到有非數字的東西,會返回nan
,所以也被稱為強制轉換。另外兩個是從左到右一位一位的轉換,所以也被成為非強制轉換。
number方法
與一元操作符+
的效果相同。即number("1")
與+"1"
相同。
如果是四則運算,字串的優先順序最高,數字第二。意思就是如果相加的遇到了字串,則不是字串的轉化為字串,如果沒有字串,有乙個數字,則不是數字的轉化為數字。
nan與任何值都不相等,包括它自己。
物件與物件比較,比較的是不是指向同乙個記憶體位址
物件與字串比較,物件先轉化為字串,然後做比較
物件與布林型別值比較,兩邊都要先轉為數字(false是0,true是1)。物件型別的值先隱式呼叫tostring方法,在隱式呼叫number方法
物件與數字比較,物件轉化為數字再比較(先隱式呼叫tostring方法,再隱式呼叫number方法將物件轉化為數字)
數字與布林型別值比較,就是進行數字的比較
數字與字串的比較,把字串轉化為數字,再比較
布林與布林,兩邊都轉化為數字再比較
null與undefined比較,true
null、undefined與其他型別比較,結果都是false,因為他們倆沒有tostring方法
簡化版:
只要有數字和布林值的,都轉換成數字進行比較;
物件與物件比較,比較的是不是指向同乙個記憶體位址;
物件與字串比較,物件先轉化為字串,然後做比較;
null、undefined、nan與其他型別比較,null和undefined除了自己之外,相互比較也是相等的,此外與其他型別比較,結果都是false,因為他們倆沒有tostring方法。其中nan與任何比較都是false(包括自己)。
// 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
複製**
JavaScript 資料型別
變數 宣告區域性變數 varmessage 宣告全部變數 message typeof 例如 var message some string alert typeof message string alert typeof message string alert typeof 95 number ...
Javascript資料型別
ecmascript中有5種簡單資料型別 也稱為基本資料型別 1.undefined 該型別只有乙個值,即undefined。在使用var宣告但未初始化時,這個變數就是undefined 2.null 該型別只有乙個值,即null。null undefined 3.boolean 4.number ...
JavaScript資料型別
undefined派生於null,因此在使用 進行比較時會返回true 沒有必要將變數值顯示宣告undefined 宣告空物件時應將其值賦值為nullundefined與null的關係 3 boolean true為真,false為假 true不一定 1,false不一定 0 使用boolean 進...