Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么javascript不修改我的变量?_Javascript - Fatal编程技术网

为什么javascript不修改我的变量?

为什么javascript不修改我的变量?,javascript,Javascript,下面的javascript函数存在的问题是,它以“非程序员”的身份返回mostpopular的字符串值,因此,尽管它在执行正确的操作时使用了我的console.log命令,但它会返回未修改的mostpopular变量。如果我在顶部修改变量,为什么它不返回修改。。。它几乎就像javascript生成一个实例,它只在测试函数的本地设置中工作(如果我放置console.log语句,它将输出正确的数据)。为什么会这样 var mostPopular = "not a programmer"; var t

下面的javascript函数存在的问题是,它以“非程序员”的身份返回mostpopular的字符串值,因此,尽管它在执行正确的操作时使用了我的console.log命令,但它会返回未修改的mostpopular变量。如果我在顶部修改变量,为什么它不返回修改。。。它几乎就像javascript生成一个实例,它只在测试函数的本地设置中工作(如果我放置console.log语句,它将输出正确的数据)。为什么会这样

var mostPopular = "not a programmer";
var totalResults = 0;


function myfunction() {
    var listOfLanguages = ["Java", "C", "C++", "PHP", "C#", "Visual Basic", "Python", "Objective-C", "Perl", "Javascript", "Ruby"];



    for (var i = 0; i < listOfLanguages.length - 1; i++) {
        chrome.history.search({
            text: listOfLanguages[i],
            maxResults: 100
        }, function (search_results) {

            var countOfResults = search_results.length;
            var langOfResults = listOfLanguages[i - 1];

            test(countOfResults, langOfResults);

        });

    }

    console.log(mostPopular);
}

function test(count, lang) {


    if (count > totalResults) {

        totalResults = count;
        mostPopular = lang;
    }

}

window.onload = myfunction;
var mostPopular=“不是程序员”;
var totalResults=0;
函数myfunction(){
var listOfLanguages=[“Java”、“C”、“C++”、“PHP”、“C#”、“Visual Basic”、“Python”、“Objective-C”、“Perl”、“Javascript”、“Ruby”];
for(var i=0;i总结果){
totalResults=计数;
大多数人=朗;
}
}
window.onload=myfunction;

如上所述,历史记录搜索是异步的,因此在完成时需要回调执行

其工作原理如下:

var mostPopular = "not a programmer";
var totalResults = 0;


function myfunction() {
    var listOfLanguages = ["Java", "C", "C++", "PHP", "C#", "Visual Basic", "Python", "Objective-C", "Perl", "Javascript", "Ruby"];



    for (var i = 0; i < listOfLanguages.length - 1; i++) {
        chrome.history.search({
            text: listOfLanguages[i],
            maxResults: 100
        }, function (search_results) {

            var countOfResults = search_results.length;
            var langOfResults = listOfLanguages[i - 1];

            test(countOfResults, langOfResults);
            console.log(mostPopular);
            // The Code will execute whenever the history search results are returned
        });

    }
// Any code here will be exceuted irrespective of the history search completed or not

}

function test(count, lang) {


    if (count > totalResults) {

        totalResults = count;
        mostPopular = lang;
    }

}

window.onload = myfunction;
var mostPopular=“不是程序员”;
var totalResults=0;
函数myfunction(){
var listOfLanguages=[“Java”、“C”、“C++”、“PHP”、“C#”、“Visual Basic”、“Python”、“Objective-C”、“Perl”、“Javascript”、“Ruby”];
for(var i=0;i总结果){
totalResults=计数;
大多数人=朗;
}
}
window.onload=myfunction;

您不希望循环使用
i
;您只需要
i
chrome.history.search
是异步的,您需要了解Javascript中的回调函数