簡體   English   中英

JavaScript函數的全局變量

[英]Global variable of JavaScript function

問題是我的函數沒有返回正確的值。 我認為原因是因為在返回值之后加載了回調。

編碼:

function hexToBase58(inputNumber) { 
    var output = "";
    $.getScript("JavaScript/biginteger.js", function(){
        //hexToDecimal
        var sum = new BigInteger();
        for (var i = 0;i<inputNumber.length;i++)
        {
            sum = sum.multiply(new BigInteger(16)).add(new BigInteger(hexToDecimalChar(inputNumber.charAt(i))));    
        }

        //decimalToBase58
        var rest = new Array();
        var base = new BigInteger(58);
        var i = 0;          
        do
        {       
            rest[i] = sum.remainder(base).valueOf();
            sum = sum.divide(base);
            i++;
        }while(sum.valueOf() > 0)
        for(var j=0;j<i;j++)
        {
            output = output + decimalToBase58Char(rest[i-j-1]);
        }   
        console.log(output);    
    }); 
    console.log(output);
    return output;
}

我得到兩個輸出:

  • “ 5KAvT6dYsRsGdZKQoh2tCLvoFanZhXcGZUwqNs3RtcsWMojkSnA”

“輸出”是一個全局變量,但是該函數不返回第二個字符串,而是第一個字符串。 我不知道如何從內部函數返回值到外部函數。

已經很晚了,我嘗試了很多。 我認為也許ajax可以提供幫助。 但是我沒有使用ajax的經驗。

不要使用$.getScript加載腳本,而只需使用<script>標記即可。

<script src="JavaScript/biginteger.js"></script>

然后,您的函數可以沒有get腳本部分:

function hexToBase58(inputNumber) { 
    var output = "";
    //hexToDecimal
    var sum = new BigInteger();
    for (var i = 0;i<inputNumber.length;i++)
    {
        sum = sum.multiply(new BigInteger(16)).add(
            new BigInteger(hexToDecimalChar(inputNumber.charAt(i))));    
    }

    //decimalToBase58
    var rest = new Array();
    var base = new BigInteger(58);
    var i = 0;          
    do
    {       
        rest[i] = sum.remainder(base).valueOf();
        sum = sum.divide(base);
        i++;
    }while(sum.valueOf() > 0)
    for(var j=0;j<i;j++)
    {
        output = output + decimalToBase58Char(rest[i-j-1]);
    }
    return output;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM