所以,我有這樣的代碼:如何減少Javascript中的內部函數變量的範圍?
var exampleModule = (function() {
var example = {};
var self = this;
example.test = function() {
this.mousedown = function (e) {
self.x1 = e.offsetX;
self.y1 = e.offsetY;
};
this.mousemove = function(e) {
// do something with x1 and y1 and e.offsetX and e.offsetY
};
};
})();
我想有x1
和y1
只能example.test內作用域。有沒有辦法做到這一點this
或我必須做一些像example.test.x1
爲每一個?目前他們的範圍是整個exampleModule
,我想把它縮小到只有example.test
。
我只是有點理解整個self/that = this;
口頭禪。我知道Javascript有這個bug,其中this
當一個函數中的某個函數引用全局範圍時,但是當上面的例子中有3個函數時什麼時候?什麼是this
等於嵌套三個或四個功能下來?
*「我想讓x1和y1僅在example.test範圍內」*您是什麼意思?你不希望他們也在'exampleModule'上? –
@ T.J.Crowder:對! –
ES6解決了以前與Js全局範圍和功能範圍有關的本地範圍問題。要使用新功能,只需使用關鍵字let替換每個var關鍵字。假設你的變量的範圍是它們被聲明的地方,即它們被聲明的大括號內。不幸的是,你必須使用babel或類似的代碼來傳輸你的代碼,因爲瀏覽器不完全支持這一點。 –