欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS的for循環(huán)中的var?和?let詳解

 更新時間:2024年05月25日 10:39:37   作者:RaptorWE  
在js的嵌套for循環(huán)異步執(zhí)行,聲明i和使用i獲取到的變量 都要用 let 聲明,不要用var,這篇文章主要介紹了JS的for循環(huán)中的var和let,需要的朋友可以參考下

在js的嵌套for循環(huán)異步執(zhí)行,聲明 i 和 使用 i 獲取到的變量 都要用 let 聲明,不要用var。
除非封裝一個函數(shù),把參數(shù)傳進去調(diào)用,才能避免var使用最后一個變量,沒必要。

1.同步 vs 異步:

Java.perform 本身是同步執(zhí)行的。它會立即執(zhí)行傳遞給它的函數(shù)。
在 Java.perform 內(nèi)部,你為每個 Utils 類的方法重寫了實現(xiàn)。這些重寫的實現(xiàn)(implementation 函數(shù))是在目標應用調(diào)用這些方法時被異步觸發(fā)的。
2.變量作用域:

使用 let 聲明 methodName 確保了每次迭代中 methodName 都是一個新的綁定。
使用 var 聲明 methodName 會導致所有閉包共享同一個變量,這在方法重寫中可能導致意想不到的結(jié)果。
3.異步觸發(fā):

雖然重寫的方法實現(xiàn)是同步定義的,但實際調(diào)用這些方法(即執(zhí)行重寫的實現(xiàn))是異步觸發(fā)的,取決于目標應用何時調(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)
            }
        }
    }
})

到此這篇關于JS的for循環(huán)中的var 和 let的文章就介紹到這了,更多相關JS的for循環(huán)中的var 和 let內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論