You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何在函数间传递局部变量?附代码问题求助

问题修复方案

你的代码里有几个关键错误,导致逻辑无法正常运行:

  • 拼写错误:naturalNewsArticlef 多了个末尾的f,正确变量名是 naturalNewsArticle
  • 运算符误用:条件判断里用了赋值符号 = 而非全等比较符号 ===,这会直接把值赋给变量,而非判断相等,导致每次都会触发第一个alert
  • 逻辑顺序问题:判断数组为空的代码要放在生成随机索引之前,否则数组为空时会触发索引越界错误

修正后的完整代码:

var naturalNewsArticle = "https://www.naturalnews.com/2023-02-20-immortalized-cell-lines-lab-grown-meat-cancer.html";
var cbsArticle = "https://www.cbsnews.com/news/putin-ukraine-war-speech-today-blames-us-nato-after-one-year-invasion/";
var msnbcArticle = "https://www.msnbc.com/rachel-maddow-show/maddowblog/buttigieg-reminds-rubio-recent-record-rail-inspections-rcna71584";
var reutersArticle = "https://www.reuters.com/legal/government/san-jose-asks-judge-toss-challenge-gun-insurance-law-2023-02-17/";

// Array of articles for the function to randomly choose from
var articles = [naturalNewsArticle, cbsArticle, msnbcArticle, reutersArticle]


function randomize()
{
    // Display iframe element
    var displayFrame = document.getElementById("articleFrame");
    displayFrame.style.display = "block";
    
    // Display form
    var displayForm = document.getElementById("assessment");
    displayForm.style.display = "block";
    
    if(articles.length === 0)
    {
        // Once all the articles have been cycled through randomly, reload the page
        location.reload();
        // 添加return阻止后续代码执行
        return;
    }
    
    var randArticle = Math.floor(Math.random()*articles.length); // select an index randomly based on the number of remaining available articles
    var selectedArticle = articles[randArticle];
    articles.splice(randArticle,1); // remove the article selected so it can't be selected next time
    document.getElementById("articleFrame").src = selectedArticle;        
    
    submitAns(selectedArticle);
}

// Currently in testing stage
function submitAns(val) 
{            
    var targetArticle = val;
    if (targetArticle === naturalNewsArticle) {
        alert("Test 1");
    } else if (targetArticle === cbsArticle) {
        alert("Test 2");
    } else if (targetArticle === msnbcArticle) {
        alert("Test 3");
    } else if (targetArticle === reutersArticle) {
        alert("Test 4");
    }
}

额外优化建议

可以用对象映射替代冗余的else if判断,让代码更简洁易维护:

function submitAns(val) {
    const alertMap = {
        [naturalNewsArticle]: "Test 1",
        [cbsArticle]: "Test 2",
        [msnbcArticle]: "Test 3",
        [reutersArticle]: "Test 4"
    };
    alert(alertMap[val] || "Unknown article");
}

内容的提问来源于stack exchange,提问作者Irene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:15:44