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
相关产品推荐
相关产品推荐

