这篇笔记主要记录如何写好JavaScript课上的内容并拓展了一些笔记
写好JS的原则
- 定义变量时应指定数据类型。 当变量缺少类型信息时,会导致其他程序员难以理解代码。
- 不要随意改变变量的类型。当需要将一个值转换其他类型时,使用一个新的变量。
- 函数的返回类型应该是固定的
- 最好不要将代码暴露在全局范围内。所有变量都在全局范围内,可能会导致命名冲突。
- 可以使用闭包来隐藏元素变量,这样不会污染全局作用域,在局部作用域中查找变量也更快。
- 不要随便使用闭包。JS是通过作用域链查找变量,如果在当前作用域中找不到变量,JS会在当前作用域的父作用域中查找,然后逐级查找全局作用域。所以闭包嵌套得越深,变量查找所需的时间就越长。
- 使用es6让代码更加优雅
ES6
- 使用箭头函数代替普通函数作为回调函数
- 使用模板字符串拼接字符串和变量
- 使用let或const代替var
模块化编程
无模块化会导致污染全局作用域,不利于大型项目的开发以及多人团队的共建。
模块化的雏形 - IIFE(立即执行函数,语法侧的优化)
本质是对作用域的把控,利用函数块级作用域实现
CJS
特征:
-
通过module + exports 去对外暴露接口
-
通过require来调用其他模块
-
优点:从框架层面解决了依赖、全局变量污染的问题
-
缺点:主要针对了服务端的解决方案,CommonJS是同步加载的。对于异步拉取依赖的处理整合不是那么的友好。
ES6模块化
引入关键字 —— import
导出关键字 —— export
- 优点:通过一种最统一的形态整合了js的模块化
- 缺点:本质上还是运行时的依赖分析