日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript --- 变量污染全局作用域问题解决方案

發布時間:2023/12/10 javascript 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript --- 变量污染全局作用域问题解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

日常寫法

// 假設你寫了幾個關于某個某塊的函數 function foo1 () {...} function foo2 () {...} function foo3 () {...}
  • 出現問題:假設你的團隊中也有一個人定義了foo1函數,那么你寫的將會覆蓋以前的函數,或者會被覆蓋掉.若前面使用let聲明了foo1變量.將會報錯.

解決污染

你可能會想,將上面3個函數,掛載到一個FooObj對象上面,這樣就很棒了.如下:

var FooObj = function () {}; FooObj.foo1 = function() { console.log(1) }; FooObj.foo2 = function() { console.log(2) }; FooObj.foo3 = function() { console.log(3) };
  • 解決:這樣可以大幅度的減少全局變量命名沖突問題
  • 新問題: 該FooObj對象是無法復制的,導致每次都是在原來的基礎上修改的.
// 假設有另外一個位置使用了你的FooObj.并且修改了foo2的內容. var a = FooObj; var b = FooObj; a.foo2(); // 2 a.foo2 = 'hahaha'; b.foo2() // TypeError: b.foo2 is not a function// a 和 b引用的是同一塊內存上的數據

解決無法復制

// 將需要的方法放入到函數的返回值中 var FooObj = function (){return {foo1: function() { console.log(1) },foo2: function() { console.log(2) },foo3: function() { console.log(3) }} }// 使用 var a = FooObj(); // FooObj返回了3個方法,掛載到a的屬性上 var b = FooObj(); a.foo1(); // 1 a.foo2(); // 2 a.foo2 = '哈哈哈'; b.foo2(); // 2// 每個函數都有一個return,用于將函數的執行權交出去.
  • 以上解決了’無法復制的問題’

總結

以上是生活随笔為你收集整理的javascript --- 变量污染全局作用域问题解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。