JavaScript 学习

JS 学习笔记,记录一些常见的错误和使用技巧。

生成指定数量的数组

1
Array.from(Array(N).keys());

Object.keys()

通过 object.keys() 可以容易将 map 的键构建一个新的数组。在循环中可以避免调用 ** hasOwnProperty() ** 判断是否是当前对象的属性。

var let const

var 没有块作用域限制,对变量的声明周期容易困惑。
坚持使用新关键字声明变量

箭头函数

对 this 的处理更好

模版字符串

使用模版字符串可以更容易的拼接需要的字符串格式。

参数使用 … 传递,可以在函数内部得到一个参数数组。
也可以在传递参数时通过 … 解开参数

class

通过关键字 class 在原型基础上实现 oo。

常用函数

  • 生成指定数量的数组
    1
    Array.from(Array(N).keys());

ES6

  • const, let 替换 var 。 var 会提升作用域, for 循环慎用.
  • 模版字符串, 实现字符串格式化/字符串多行显示.
  • 新加函数: includes, startsWith, endsWith, padStart, padEnd.
  • 函数默认值. num = num || 2000. 实际值为 0时会出错。
  • 箭头函数: 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象.
  • Node.js 配置

  • 代码中常用 * process.env.NODE_ENV * 判断当前是开发环境, 启动程序时通过如下方式配置
    1
    2
    export NODE_ENV=development&& nodemon --harmony --use_strict index.js  -w
    set NODE_ENV=development&& nodemon --harmony --use_strict index.js -w
    另外参考 cross-env 实现跨平台环境变量设置。

Node.js 学习文档

ReactiveX

ES6

视频教程

软件

Node 编译

Node 编译

Node 由于其入门简单,语法少广受程序猿欢迎。 但是 Node 本身的缺陷或使用者不熟悉在一下方面会出现一些意料之外的事情。

  • 不用用于处理复杂任务,如果非做不可。开启多线程模式。
  • https://github.com/mcollina/make-promises-safe 内存泄露。
  • sails orm wterline 查询缓慢。
  • koa sttic 中间件浏览器访问不显示目录,实际能正常读取(缺少 index.html)。

Node 有多种错误处理方式, 异步与同步使用不同的方式捕获异常。 在写 web 框架时需要保证异常的处理不能出现内存泄漏或者因为单次请求异常导致服务终止。

  • try catch, 处理 await, 通用错误
  • .catch(), 处理 promise 错误

Http 服务最重要是即使一个请求导致内部错误,但是服务端不能停止。 使用

1
2
3
process.on('uncaughtException', (err) => {
console.error('uncaughtException');
});

保持服务器不中断, 另外可以使用 pm2 保活.

断言

assert 两种模式, 建议strict.