我正在閱讀es6導入語句reference on MDN。語法:es6導入副作用含義
import "my-module";
將僅導入整個模塊的副作用,而不導入任何綁定。我不確定副作用是什麼意思。我一直在用角度說import "angular"
。 Angular綁定到窗口,但不返回對象。所以我不確定這是否會被完全稱爲副作用。
我正在閱讀es6導入語句reference on MDN。語法:es6導入副作用含義
import "my-module";
將僅導入整個模塊的副作用,而不導入任何綁定。我不確定副作用是什麼意思。我一直在用角度說import "angular"
。 Angular綁定到窗口,但不返回對象。所以我不確定這是否會被完全稱爲副作用。
當您需要導入某些不導出任何內容但執行其他操作的東西時,這是僅限副作用模塊。您只導入它來初始化它。
純和非純模塊
如果你仔細想想模塊,功能模塊,只有通過導出它的內容的影響範圍就是這樣總是返回同樣的事情(一個純函數不帶參數的函數)。無論你將導入多少次反應15.01,你總是會得到一個包含相同方法的對象。
帶有副作用的模塊是以其他方式改變範圍然後返回某些東西的模塊,它的影響並不總是可預測的,並且可能受到外力(非純功能)的影響。例如,polyfill可能無法做任何事情,因爲它發現它啓用的功能已被瀏覽器支持。副作用
例子:
window
對象,但不出口 什麼。「副作用」可能意味着很多事情。它可能會修改全局變量,它可能使用了一些環境API(例如,在Node.js中寫入文件,或者在瀏覽器中調用Ajax)。
請看下面的示例代碼。 當你嘗試導入某些東西時,它不會導出任何內容,而是執行很多操作並覆蓋現有代碼(如果有的話),這是副作用。
import Ember from 'ember';
Ember.RSVP.configure('onerror', function(error) {
....
});
app.js:
import './overrides/extra';
下面是一個例子:
//a.js
function print1()
{
console.log("export print1 is working");
}
function print2()
{
console.log("non-export print2 is working");
}
print1();
print2();
//b.js
import "a.js";
當你運行「B。JS」,你會看到打印的信息,這是所謂的
副作用
。