js-notebook

  1. 注意DOM和BOM的区别,ECMAScript只针对js的语法核心,实际大部分浏览器里的js = ECMAScript + DOM + BOM, 而nodejs里就只包括core js

  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,提高页面响应速度

  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只是切片,并且返回副本,一般不用。

  2. Array.indexOf里比较用的是全等===,只对基本类型有效,查找对象和特定属性之类的用underscore

  3. 5.4 RegEx

参考
  1. 《Javascript高级程序设计》
  2. 关于node.js的误会

转载于:https://www.cnblogs.com/AlexanderYao/p/6645756.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值