- 對于 parseInt 函數(shù)來說,返回的結(jié)果是十進(jìn)制,其中第一個參數(shù)是字符串,如果轉(zhuǎn)換失敗返回 NaN ,而第二個參數(shù)則是對第一個參數(shù)的說明,也就是說,如果第一個參數(shù)的字符串是二進(jìn)制,那么第二個參數(shù)就傳 2 ,同理如果第一個參數(shù)是十六進(jìn)制,那么就傳 16 ,以此類推,這個函數(shù)會給人一種錯覺,那就是第二個參數(shù)是要轉(zhuǎn)換成幾進(jìn)制,其實并非如此,而是上面所說的那樣,還要特此說明的是,由于數(shù)字,都可以轉(zhuǎn)換成十進(jìn)制與十六進(jìn)制,所以第一個參數(shù)到底是幾進(jìn)制,那要取決于你的需求里面是幾進(jìn)制;
- 將字符串轉(zhuǎn)換成十進(jìn)制還有一種更加簡單的方法,也就是使用單元運算符 + ,具體內(nèi)容:+ "0xff" 輸入的結(jié)果是255或者 + "010" 輸出的結(jié)果是 10 ,經(jīng)過測試只能轉(zhuǎn)換十進(jìn)制和十六進(jìn)制,當(dāng)然最后的結(jié)果都是十進(jìn)制;
- 如果所轉(zhuǎn)換的字符串里面有非數(shù)字,那么會忽略字符以后任何字符,包括這個字符,如果字符串里面第一個字符就是非數(shù)字,那么直接返回 NaN ,如果不是會打印數(shù)字部分;
- 使用一元運算符 + 的時候,除了上面的不足以外,還有就是如果字符串中有非數(shù)字,不管這個非數(shù)字在字符串的什么位置,都將會失??;
- && 與 || 的短路運算,這兩個是邏輯運算符,幾乎所有的編程語言中, && 都有只要左邊的表達(dá)式不成立,那么就不再執(zhí)行右邊的表達(dá)式, || 是只要左邊的表達(dá)式成立,那就不再執(zhí)行右邊的表達(dá)式,可以利用這一特性來進(jìn)行判斷變量是否設(shè)置,比如我有這樣一個需求,一個有可選和必須,其中可選參數(shù),用戶可以不傳遞,不傳遞的參數(shù)都是使用默認(rèn)值,那么怎樣判斷用戶有沒有傳遞呢,可以使用 if 來進(jìn)行判斷,也可以使用 || ,將那個參數(shù)放到 || 左邊,然后把賦值的默認(rèn)值放到右邊,這樣就可以完成這個工作;
- 在 javascript 的選擇語句中, case 后面的表達(dá)式與 switch 里面的值是進(jìn)行 === 比較的,也就是說,值不光要值相等,還要類型也相同;
- 在單獨給對象添加屬性的時候,可以使用方括號,在方括號里面可以使用變量值,但是在定義對象的時候不能方括號,但是現(xiàn)在可以了, es6 添加的,具體例子如下:
// es6 和 es5 都能直接賦值的方式使用方括號
var s = 1
var a = {}
a["test" + s] = s
// 在 es5 中不能使用方括號
var b = {
// ["test" + s] : s, 這是錯誤的
"test" : "wujingyue"
}
// 在 es6 中是可以的
var c = {
["test" + s] : s
}