今日地鐵看書總結
強制型別轉換
tostring()
其他資料型別轉化為字串的方法
注意,陣列重寫了tostring()方法。
對於json.stringfy()
不安全值有undefined
,null
,function
,symbol
,迴圈引用物件,轉化他們結果為undefined
json.stringfy(function(){}) //undefined
當使用json.stringfy()轉換型別的時候,如果該物件定義了tojson()
方法,就會先呼叫tojson()
方法。
當遇到引數為不安全值的時候,也需要tojson()
方法返回乙個安全值。
在tojson()
方法方法裡面可以定義一些特別的轉化方式。
強制轉化為布林值var o =
var a =
}a.tojson=function() //因為c,d屬性均不合法
}json.stringfy(a) //""
通過new boolean
進行強化轉化或者
!!a // 返回true或者false
一些假值:通過boolean強制轉型之後,就會轉換為false
undefined還有一些看起來像假值,但其實是真值的。null
false
+0,-0,nan
'' ''
各種字串(包括:"false","0","''")總結:不在假值列表的均為真值空陣列,空物件,空函式
還有一點容易與boolean產生混淆.就是if()
語句內的判斷
0、-0、0.0、null、""、false、undefined、nan //判斷為false
其他情況都是判斷為true的可以看看以下的特殊情況。
看到
==true //false
這是因為比較的時候,==進行強制型別轉換。把轉換成了0,true轉換成了1.所以返回false
顯式解析數字字串
`parseint(a)接受引數為字串
隱式型別轉換var a= '42'
var b= '42px'
number (a) //42 轉換
parseint(a)//42 解析
number (b) //nan
parseint(b)//42
可以使用+""
進行數字和字串的隱式轉換。他會對a呼叫valueof()
方法,然後通過tostring()
抽象操作,把返回值轉換為字串。所以如果valueof()
方法和tostring()
方法定義存在不和諧的地方,那麼最終的返回值就不是23了
42+"" // "42"
不和諧是指:
||和&&var a=
tostring:function()
}a+"" //"42"
string(a) //"4"
運算元選擇器運算子
可以看到:var a = 42
var b = null
var c = 'abc'
a||c //42
a||b //null
a&&b //42
a&&c //'abc'
||判斷結果為true時,返回第乙個值。結果為false時,返回第二個值
&&判斷結果為true時,返回第二個值。結果為false時,返回第乙個值
&&的優先順序比||高
可以利用||特性,為變數賦予預設值
a=a||42
利用&&特性,為函式執行把關
a&&foo()
核心:先轉化數值再比較
為什麼比較中兩個都是返回false呢?var a ='42'
a==true //false
a== false //false
首先它會將布林型通過tonumber()
轉化為數字。所以tonumber(true)
變成1,tonumber(false)
返回了0.所以怎麼比較都不會相等。
所以日常不要使用if(a==true)
這種形式
使用if(a)
是可以的。
JS 型別轉換 強制型別轉換
js 型別轉換 強制型別轉換 一 parseint 將其他型別轉換成number型別的整數 注意 string number 1 字串中值的首字元必須是數字,轉換後才能得到具體的值 否則得到nan 2 只轉換從首字元開始的連續數字 如 2b345 轉換後只得到2 3 除了string,其他型別轉換後...
js強制型別轉換
值型別轉換 包括兩種 顯式轉換和隱式轉換。將值從一種型別轉換為另外一種型別稱為型別轉換,也叫做顯式型別轉換,隱式的情況也叫做強制型別轉換。在js中兩種轉換被統稱為強制型別轉換。其實,對於顯式和隱式沒有很明確的界定,如果你不知道某種情況是一種顯式型別轉換,那麼它對於你來講就是隱式的。抽象值操作 顯示強...
JS 強制型別轉換
number string var number 8 var str string number console.log typeof str 複製 boolean string var boolean true var str string boolean console.log typeof s...