JS的for循環(huán)中的var?和?let詳解
在js的嵌套for循環(huán)異步執(zhí)行,聲明 i 和 使用 i 獲取到的變量 都要用 let 聲明,不要用var。
除非封裝一個(gè)函數(shù),把參數(shù)傳進(jìn)去調(diào)用,才能避免var使用最后一個(gè)變量,沒必要。
1.同步 vs 異步:
Java.perform 本身是同步執(zhí)行的。它會(huì)立即執(zhí)行傳遞給它的函數(shù)。
在 Java.perform 內(nèi)部,你為每個(gè) Utils 類的方法重寫了實(shí)現(xiàn)。這些重寫的實(shí)現(xiàn)(implementation 函數(shù))是在目標(biāo)應(yīng)用調(diào)用這些方法時(shí)被異步觸發(fā)的。
2.變量作用域:
使用 let 聲明 methodName 確保了每次迭代中 methodName 都是一個(gè)新的綁定。
使用 var 聲明 methodName 會(huì)導(dǎo)致所有閉包共享同一個(gè)變量,這在方法重寫中可能導(dǎo)致意想不到的結(jié)果。
3.異步觸發(fā):
雖然重寫的方法實(shí)現(xiàn)是同步定義的,但實(shí)際調(diào)用這些方法(即執(zhí)行重寫的實(shí)現(xiàn))是異步觸發(fā)的,取決于目標(biāo)應(yīng)用何時(shí)調(diào)用這些方法。
Java.perform(function () { let Utils = Java.use("com.xxx.xxx.Utils"); var methods = Utils.class.getDeclaredMethods(); for (let i = 0; i < methods.length; i++) { let methodName = methods[i].getName(); console.log('methodName: ', methodName) var overloadsArray = Utils[methodName].overloads; for (let j = 0; j < overloadsArray.length; j++) { overloadsArray[j].implementation = function () { var params = ''; for (let k = 0; k < arguments.length; k++) { params += arguments[k] + ' '; } console.log(`utils.${methodName} is called! params is: `, params); console.log(this); return this[methodName].apply(this, arguments) } } } })
到此這篇關(guān)于JS的for循環(huán)中的var 和 let的文章就介紹到這了,更多相關(guān)JS的for循環(huán)中的var 和 let內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Chrome擴(kuò)展頁面動(dòng)態(tài)綁定JS事件提示錯(cuò)誤
開發(fā)Chrome擴(kuò)展時(shí),頁面的popup.html中需要js的時(shí)候,直接將JS寫在動(dòng)態(tài)綁定JS事件會(huì)提示錯(cuò)誤,下面有個(gè)不錯(cuò)的解決方法,大家可以參考下2014-02-02webpack與SPA實(shí)踐之管理CSS等資源的方法
本篇文章主要介紹了webpack與SPA實(shí)踐之管理CSS等資源的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12不得不分享的JavaScript常用方法函數(shù)集(下)
不得不分享的JavaScript常用方法函數(shù)集,幫助大家更好的學(xué)習(xí)javascript程序設(shè)計(jì),有興趣的朋友可以參考一下2015-12-12JavaScript學(xué)習(xí)筆記之?dāng)?shù)組的增、刪、改、查
這篇文章主要介紹了JavaScript學(xué)習(xí)筆記之?dāng)?shù)組的增、刪、改、查的相關(guān)資料,需要的朋友可以參考下2016-03-03zepto中使用swipe.js制作輪播圖附swipeUp,swipeDown不起效果問題
Swipe JS 是一個(gè)輕量級的移動(dòng)滑動(dòng)組件,支持 1:1 的觸摸移動(dòng),阻力以及防滑性能都不錯(cuò),可以讓移動(dòng)web應(yīng)用展現(xiàn)更多的內(nèi)容,能解決我們對于移動(dòng)Web對滑動(dòng)的需求。下面小編給大家介紹zepto中使用swipe.js制作輪播圖附swipeUp,swipeDown不起效果問題,需要朋友可以參考下2015-08-08iframe的父子窗口之間的對象相互調(diào)用基本用法
iframe在使用時(shí)可能會(huì)涉及到父子窗口之間傳值和方法的相互調(diào)用,研究了一下其實(shí)非常簡單,就那么幾個(gè)用法而已,在此與大家分享下,感興趣的朋友可以參考下2013-09-09JavaScript實(shí)現(xiàn)帶音效的煙花特效
這篇文章主要為大家介紹了通過JavaScript實(shí)現(xiàn)的帶音效的煙花特效,文中的示例代碼簡潔易懂,對我們學(xué)習(xí)JavaScript有一定的幫助,感興趣的可以了解一下2021-12-12