让你的javascript函数拥有记忆功能,降低全局变量的使用
生活随笔
收集整理的這篇文章主要介紹了
让你的javascript函数拥有记忆功能,降低全局变量的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
考慮例如以下場景:假如我們須要在界面上畫一個圓,初始的時候界面是空白的。當鼠標移動的時候,圓須要尾隨鼠標移動。鼠標的當前位置就是圓心。我們的實現方案是:假設界面上還沒有畫圓,那么就新創建一個;假設已經存在,就直接更新其位置。這樣可以避免先銷毀。后創建的開銷。
var circle = null;function drawCircle(position)
{if(circle == null){circle = GUI.Create(position);//創建1個圓}else{circle.updatePositon(position);//更新圓的位置}
}
這段代碼沒有什么問題,除了引入了全局變量circle,而實際上circle僅僅會在drawCircle()函數中使用。也就說為了實現if-else的推斷,我們不得不使用全局變量。
有沒有什么方式可以讓函數擁有記憶功能,可以記住之前是否創建了圓。
這種話,我們就不用使用全局變量了。
var drawCircle = function(position)
{var circle = null;function innerFunc(position){if(circle == null){circle = GUI.Create(position);}else{circle.updatePositon(position);}}return innerFunc;
}();
這段代碼可以正確的實現須要的功能,并且不會引入沒有必要的全局變量。
var drawCircle = function(position)
{}(); ?
這段代碼會定義1個作用域。大括號內部定義的變量和函數,對于外部都是不可見的。并且大括號內部的代碼會立馬運行,代碼 之前完之后將innerFunc賦值給drawCircle函數。這種話。就行縮小變量的作用域。?
?
?
?
轉載于:https://www.cnblogs.com/mengfanrong/p/5222609.html
總結
以上是生活随笔為你收集整理的让你的javascript函数拥有记忆功能,降低全局变量的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《秋槿》第十二句是什么
- 下一篇: 产品经理要读什么书?怎么读?