js函数的副作用

42次阅读

共计 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 去判断该函数有副作用呢?

正文完
 0