共计 483 个字符,预计需要花费 2 分钟才能阅读完成。
js 函数的副作用 对于 treeshaking 有很大影响
看一例子
import {cube} from './maths.js';
console.log(cube( 5) ); // 125
maths.js:
export function square (x) {return x.a}
square({a: 123})
export function cube (x) {return x * x * x;}
shaking 操作后变成这样
function square (x) {return x.a}
square({a: 123});
function cube (x) {return x * x * x;}
console.log(cube( 5) ); // 125
显然没有 shaking 干净,为什么呢,因为 return x.a 这句话有副作用
还有哪些语句有副作用呢?
副作用的函数不仅仅只是返回了一个值,而且还做了其他的事情:
1、修改了一个变量
2、直接修改数据结构
3、设置一个对象的成员
4、抛出一个异常或以一个错误终止
5、打印到终端或读取用户输入
6、读取或写入一个文件
7、在屏幕上画图
提一个问题,给出一段函数,有没有方法透过 ast 去判断该函数有副作用呢?
正文完
发表至: javascript
2019-09-12