js-notebook

  1. 注意DOM和BOM的區別,ECMAScript只針對js的語法核心,實際大部分瀏覽器裏的js = ECMAScript + DOM + BOM, 而nodejs裏就只包括core jshtml

  2. 隱性的toString、字符串轉數字,有坑!
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
  1. 全部js放body的最後,先解析html顯示頁面,再加載js,提升頁面響應速度node

  2. 儘量啓用嚴格模式"use strict";數組

  3. 沒有塊級做用域,for循環裏的i外部可見
for (var i = 0; i < 10; i++) {
    console.log("in loop: " + i);
}
console.log("out loop: " + i);
  1. gc: 標記清除 優於 引用計數(沒有循環引用的問題)瀏覽器

  2. Array.length是可寫的,小技巧:可用來方便的刪除、添加
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]
  1. Array能夠是Stack棧,能夠是List隊列,也能夠是Dict(但不推薦做爲Dict使用)
Array.push + pop = stack
Array.push + shift = list
  1. Array.sort是按toString()以後再排序的,即便全是數字,這裏有坑!多是由於能放不一樣的數據類型吧~
var arr = [1, 2, 3, 10, 15];
arr.sort(); // [1, 10, 15, 2, 3]
  1. Array.splice特別有用,能夠操做原數組:刪除、插入、替換。slice只是切片,而且返回副本,通常不用。oop

  2. Array.indexOf裏比較用的是全等===,只對基本類型有效,查找對象和特定屬性之類的用underscore設計

  3. 5.4 RegExcode

參考

  1. 《Javascript高級程序設計》
  2. 關於node.js的誤會
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息