注意DOM和BOM的區別,ECMAScript只針對js的語法核心,實際大部分瀏覽器裏的js = ECMAScript + DOM + BOM, 而nodejs裏就只包括core jshtml
var a = [4]; console.log(a > 3); //true, 由於a.toString()是"4" console.log(a > 5); //false //緣由在於:與數字比較時,js會隱性的將字符串轉成數字。而單個元素的數組Array.toString()時,只輸出單個元素的toString()。 var b = [4, 2]; console.log(b > 3); //false, 由於a.toString()是"4,2" console.log(b > 5); //false
全部js放body的最後,先解析html顯示頁面,再加載js,提升頁面響應速度node
儘量啓用嚴格模式"use strict";數組
for (var i = 0; i < 10; i++) { console.log("in loop: " + i); } console.log("out loop: " + i);
gc: 標記清除 優於 引用計數(沒有循環引用的問題)瀏覽器
var arr = [1, 2, 3]; console.log(Object.getOwnPropertyDescriptor(arr, 'length')); arr.length = 2; // delete 3, [1, 2] arr[arr.length] = 4; // add 4, [1, 2, 4]
Array.push + pop = stack Array.push + shift = list
var arr = [1, 2, 3, 10, 15]; arr.sort(); // [1, 10, 15, 2, 3]
Array.splice特別有用,能夠操做原數組:刪除、插入、替換。slice只是切片,而且返回副本,通常不用。oop
Array.indexOf裏比較用的是全等===,只對基本類型有效,查找對象和特定屬性之類的用underscore設計
5.4 RegExcode