1.若是已經聲明瞭一個變量,可是沒有對變量賦值,則該變量的值爲undefined,即尚未肯定的數據類型javascript
2.變量提高:js引擎的工做方式是,先解析代碼,獲取全部被聲明的變量,而後再一行一行的運行,這形成的結果就是全部的變量聲明語句,都會被提高到代碼的頭部,這就叫變量提高,如java
console.log(a); var a = 1 ;
上面的代碼在聲明變量a以前就使用它,這是一種錯誤的作法,但不會報錯,其實真正運行的是下面的代碼數組
var a; console.log(a); a = 1;
最後的結果是現實undefined,表示變量已聲明,但還未賦值函數
3.js對標誌符的大小寫敏感,因此a和A是兩個不一樣的標誌符spa
4.js中的條件語句有if else,switch,循環語句有while,for,do while,break(用於在循環體中跳出循環),continue(用於再也不進行本次循環的後續操做,直接進入下一次循環)code
5.若是字符串後面有方括號,表示返回某個位置的字符,從0開始,如'abc'[1],表示字母b。若是方括號中的數字超過字符串的範圍或者方括號中根本不是數字,則返回undefined,這是由於js內部把字符串視爲由單個字符組成的數組對象
6.若是js預期某個位置應該是布爾值,會將該位置上現有的值自動轉爲布爾值,轉換規則除了下面5個值被轉換爲false外,其餘都是true。他們分別是 undefined,null,false,0(NaN),""。空數組和空對象對應的值也是trueblog
7.檢測變量類型:typeof和 instanceofip
8.js內部,全部數字都是以64位浮點數形式存儲,即便整數也是如此,因爲浮點數不是精確的值,因此涉及小數的比較和運算要特別注意字符串
9.NaN表示非數字,主要出如今將字符串解析成數字出錯的成河,數據類型屬於number。它在數值運算時被看成0,在布爾運算時被看成false
10.isNaN()能夠用來判斷一個值是否爲isNaN,如isNaN(parseInt('hello world'))返回true,對於數組和對象也會返回true
11.Infinity表示無窮,除了0除以0獲得NaN,其餘任意數除以0都獲得Infinity,它有正負之分
12.parseInt()方法能夠將字符串或小數轉化爲整數,若是字符串頭部有空格,會被去除,如parseInt('12.3')返回12,若是字符串中有不能轉換爲數字的字符,則再也不進行轉換,返回已經轉好的部分
13.以下代碼能夠建立一個數組,var a = new Array(1,4,'r') 或者 var a = [9,'sf',54];
14.檢查某個鍵是否存在的運算符in,使用於數組,也使用於對象
2 in ['a',34,'fd'] //返回true '2' in ['a',34,'fd'] //返回true
15.使用for-in循環,能夠遍歷數組的全部元素(也可使用for循環)
var a = ['ew',54,'534']; for(var i in a){ console.log(a[i]); }
16.對象成員的引用可使用「點」結構(object.key),也可使用方括號表示,可是數組成員不能使用,arr.0不合法,由於數字不是標誌符,因此數組成員只能用方括號來表示
17.length屬性表示數組的元素個數,添加新元素後,該元素會自動增加。length屬性是可寫的,若是認爲設置一個小於當前元素個數的值,該數組的元素會自動減小到你設置的值;若是要將一個元素清空,就是將length屬性設置爲0;若是人爲設置大於當前元素個數的值,則數組的長度增長到改制,新增的位置填入空元素
18.若是使用delete命令刪除一個值,不影響length屬性的值
var a = ['fsd',3,6]; console.log(a.length); //輸出3 delete a[1]; console.log(a.length) //輸出3
19.因爲length屬性的特色,使用它進行for循環遍歷時要很當心,會遺漏非數字鍵的屬性,而且會包括undefined的值
20.EcmaScript5中新加入的數組方法:map,forEach,filter,every,some,reduce,reduceRight,上面7個與函數式操做有關,indexOf,lastIndexOf-----這些方法的好處在於他們能夠鏈式使用