從C++到《你所不知道的JS》系列
¶從 C++到《你所不知道的 JS》系列
《你所不知道的 JS》原作: https://github.com/getify/You-Dont-Know-JS
我讀的是 O’RELLY 的書本
在此,針對我所不知道的 JS,進行紀錄。
¶誤解
以下都是誤解
- JS 是一種直譯式語言,不會經過編譯。
- this 關鍵字是參考所有在的函式
- type null 是 null
- 弱型別,就是沒有型別
- javascript 的類別、繼承…(物件導向特性)
- 想要完整學會 javascript
粗略的正確的情況:
- JS 會在即將使用前,會先編譯。
- this 是「誰呼叫函式」
- type null 是 object
- 是「值型別」,無「變數型別」,typeof() 是「該變數的值型別」
- javascript 的行為委派
- javascript 還在持續發展中,永遠都有未知的部份
¶typeof 型別
¶why typeof null === 'object'
用來檢查未宣告的變數
// Uncaught ReferenceError: b is not defined |
¶值
¶Array
以文字字串存取: 不會更新.length。
以數字字串存取: 數字字串當作數字型別使用。
var a = []; |
¶like-Array
轉成 Array
var larr = document.querySelectorAll(".class"); //like array |
¶string
如果常常需要用array
的思維處理string
。
建議將該string
,存成array
再用.join()
印出即可。
需要使用的時機
以「反序」的需求為例,若常常這麼寫的時候:
var str = "foo"; |
就可以考慮這麼寫
var arr = 'foo'split('') |
或參考Esrever
¶number
詳閱IEEE 754
42.toFixed(3) //Uncaught SyntaxError: Invalid or unexpected token |
其它進制的number
表示法
小寫前綴是個好習慣,大寫也可以,但是「除了混淆,沒有其它更好的用途」
0x2a; //16進制的42 |
¶number < 1
這是所有 IEEE 754 所有的語言都有的問題。
Number.EPSILON
是定義誤差容許範圍
var a = 0.3; |
發表於
tags:
{ 你所不知道的js }