var result = [10] + 1;console.log(result)
"101"存在運算子"+",意味著將[10]轉化為一個值,相當於調用其valueOf()方法,而Array的valueOf相當於其toString
var result = ['a', 'b', 'c'] + "";console.log(result)
"a,b,c"與一個Null 字元相加,我們大可以就當成強行調用其toString方法,而Array的toString方法相當於調用其join方法,join的預設分隔符號則為","
var result = 'a' + 5;console.log(result)
"a5"加號運算式優先考慮字串拼接
var result = 3.75 | 0;console.log(result)
3數值|0相當於對數值進行Math.floor
var result = 65 / 'a';console.log(result)
NaN'a'首先要轉換為一個Number類型,既然不能轉換為一個正常的數字,就轉換為NaN,與NaN進行運算結果都為NaN
var obj = {"10": 1};obj[10] = 2;obj[[1, 0]] = 3;var result = obj["10"] + obj[10] + obj[[1, 0]];console.log(result)
7對象的鍵總為字串,因此obj[10]相當於obj["10"],obj[[1,0]]相當於obj["1,0"]
var $ = {"": String};var result = !!$[([])]();console.log(result)
false轉換過程如下!!$[([])]() --> !!$[""]() --> !!String() --> !!"" --> false
var result = (' \t\r\n ' == 0);console.log(result)
true考空白字串的類型參見http://www.cnblogs.com/rubylouvre/archive/2009/09/18/1568794.html這裡的回複討論
var a = new String("123");var b = "123";var result = (a === b);console.log(result)
false一個為object一個為string
var a = {key: 1};var b = {key: 1};var result = (a == b);console.log(result)
false兩個對象總是不等的
http://blog.vjeux.com/2009/javascript/smallhash-information-compression.html