js函數的反作用

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

相關文章
相關標籤/搜索