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的误会
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息