注意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