javascript - JS 外部范围变量
问题描述
我一直在开发基于游戏节目倒计时的游戏应用程序。到目前为止,我已经能够让用户选择元音和辅音并输入一个单词,该单词检查输入的单词是否包含生成的相同字母。我创建了一个匿名函数,它使用 jQuery 检查字典文本文件以查看它是否被列出。但是我遇到了麻烦,我不断收到一条警告消息“在引用外部范围变量的循环中声明的函数可能会导致语义混乱。”
我不确定我做错了什么,请参阅下面的代码:
$(".submission").hide();
//assigning letter container class to variable
var letterContainer = document.querySelector(".letter-container");
function pickFrom(letters) {
// if the length of the letter container is less than 8
if (letterContainer.innerHTML.length < 8) {
//add letters to the letter container
letterContainer.innerHTML += rando(letters);
}
//once letter container length reaches 8
if (letterContainer.innerHTML.length === 8) {
//show submission input and button
$(".submission").show();
//remove letter buttons after 8 letters have been chosen by user
$(".letter-btn").hide();
//assign given letters from letter container to a variable
var givenLetters = letterContainer.innerHTML.split("");
var inputWord = document.querySelector(".enter-word").value;
document.querySelector(".submit-word").addEventListener("click", function() {
var inputWord = document.querySelector(".enter-word").value.split("");
if (inputWord.length <= 8) {
//
var isValid;
for (var i = 0; i < inputWord.length; i++) {
// console.log(inputWord[i]);
if (givenLetters.includes(inputWord[i])) {
var indexPosition = givenLetters.indexOf(inputWord[i]);
givenLetters.splice(indexPosition, 1);
var newWord = inputWord.join("").toLowerCase();
$.get("https://raw.githubusercontent.com/cpog19901/Countdown/master/text/english3.txt", function(contents) {
//contents variable now contains the contents of the textfile as string
//check if file contains the word entered by user
var hasString = contents.includes(newWord);
//outputs true if contained, else false
console.log(hasString);
});
isValid = true;
} else {
console.log(inputWord[i]);
console.log("no");
isValid = false;
}
}
if (isValid == true) {
console.log("This is a valid word");
}
else if (isValid == false) {
console.log("This is NOT a valid word");
}
}
});
}
}
我需要所有陈述都是真实的,包括匿名函数,这样它才能让用户知道它是一个有效的词。
解决方案
错误消息表明要注意for
-loops。我找到了这个:
for (var i = 0; i < inputWord.length; i++) {
/* … */
$.get("https://raw.githubusercontent.com/cpog19901/Countdown/master/text/english3.txt", function(contents) {
/* … */
}
/* … */
}
这个 AJAX 调用在循环的每一次迭代中进行(假设环境if
为真)。
相反,您可以提前完成并将结果存储在变量中。
推荐阅读
- python-3.x - python中的列表和id
- android - 调试 Android 折叠工具栏 - insets 和 onResume
- javascript - 为什么 Chart.JS 显示额外的一行
- javascript - 如何覆盖从辅助功能中的父级继承的子元素中的角色链接
- java - 如何计算数组字段中匹配特定条件的元素并使用 MongoDB java 驱动程序插入到投影中
- arrays - 极慢的 char* 访问
- r - 选择相似的句子
- python - Python - 对列进行差异迭代
- python - 如何根据文本 tkinter 中的选择更改字体?
- c++ - 如何将结构成员指针传递给函数?