投影片: http://yuiblog.com/assets/crockford/javascript.zip
影片
- http://video.yahoo.com/video/play?vid=111593
- http://video.yahoo.com/video/play?vid=111594
- http://video.yahoo.com/video/play?vid=111595
- http://video.yahoo.com/video/play?vid=111596
與C,C++,Java,C#等語言相較,Javascript的特殊之處有
- Javascript是一個Functional Language
- 只有一種浮點數字類別,沒有如int之類等其他數字類別。這個唯一的數字類別是
IEEE-754浮點數標準,其大小為64 bits。 - 雖然只有一種數字類別,但有一種特殊的數字「值」: NaN (Not a Number)。NaN與自己做等於、大於、小於運算的結果都是false。
- 在C中,整數0為false,非0整數則被當成true。在Javascript中,此概念被擴大成:
false, null, undefined, "" (空字串), 0, NaN 都被視為是false,不屬於這些的則都被視為true。 - + 的怪用法: +"42" 會將字串"42"轉換成數字42。這種用法方便是方便,但,會不會太怪了些。
- &&的怪用法,用來避免null reference:
return a && a.member;
等同於
if (a) {
return a.member;
} else {
return a;
} - 的怪用法,用來設定預設值:
var last = input nr_items;
上式在input為falsy value時,會指定nr_items給last。 - break到指定的階層(label)
loop: for (;;) {
...
if (...) {
break loop;
}
...
} - 有類似C#中foreach的描述,但有點怪怪的
for (var name in object) {
if (object.hasOwnProperty(name)) {
// within the loop,
// name is the key of current member
// object[name] is the current value
}
}
注意/建議事項
- 使用parseInt將字串轉換成數字時,最好使用有兩個參數的版本,明確指定字串所表達數字是幾進位的。否則的話會出現 parseInt("08") ==> 0,只有parseInt("08", 10)能正確轉換成8。