js函数的反作用 对于treeshaking有很大影响数据结构
看一例子函数
import { cube } from './maths.js'; console.log( cube( 5 ) ); // 125
maths.js:code
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 这句话有反作用io
还有哪些语句有反作用呢?console
反作用的函数不单单只是返回了一个值,并且还作了其余的事情:ast
一、修改了一个变量 二、直接修改数据结构 三、设置一个对象的成员 四、抛出一个异常或以一个错误终止 五、打印到终端或读取用户输入 六、读取或写入一个文件 七、在屏幕上画图
提一个问题,给出一段函数,有没有方法透过ast 去判断该函数有反作用呢?function