kaw*_*nah 0 javascript variables return
考虑一下:
\nlet arr = [\'hello\', \'hi\', \'ok\', \'this one\']\nlet varToAssign\n\nfunction assignTheVar() {\n for(let i = 0; i < arr.length; i++) {\n if(arr[i] == \'this one\') {\n varToAssign = arr[i]\n return\n }\n }\n console.log(varToAssign)\n}\n\nwindow.addEventListener(\'load\', assignTheVar)Run Code Online (Sandbox Code Playgroud)\r\n该变量varToAssign不会被控制台记录。
这是为什么?
\n此问题的搜索结果
\n\n但这有效:
\nlet arr = [\'hello\', \'hi\', \'ok\', \'this one\']\nlet varToAssign\n\nfunction assignTheVar() {\n for(let i = 0; i < arr.length; i++) {\n if(arr[i] == \'this one\') {\n varToAssign = arr[i]\n }\n }\n console.log(varToAssign)\n}\n\nwindow.addEventListener(\'load\', assignTheVar)Run Code Online (Sandbox Code Playgroud)\r\n我知道这是一个愚蠢的问题,但我正在努力在网上寻找答案,我不知道要搜索什么。
\n\n并不是我正在寻找的......
\n这是一种答案
\n\n\n\nreturn 语句立即退出函数,返回其后面的表达式的值。如果您在循环中使用 return 语句而没有某种条件,那么它将执行第一遍,然后退出。您需要将它们收集在一个变量中,并在循环后返回该变量。正如其他人所建议的,您可能希望将它们存储在数组中。\xe2\x80\x93\n无用代码\n2011 年 11 月 15 日 5:31
\n
但这不就是我正在做的事情吗?它“执行”了第一遍,所以它不应该在“返回”之前返回值吗?
\n该return语句立即从函数返回。因此,当您执行该 return 语句时,记录该值的代码不会被执行。
该变量确实被分配,只是没有记录,正如您通过执行下面代码片段的稍微修改的版本所看到的那样(我还修改了缩进,这可能使结构更清晰):
let arr = ['hello', 'hi', 'ok', 'this one']
let varToAssign
function assignTheVar() {
for(let i = 0; i < arr.length; i++) {
if(arr[i] == 'this one') {
varToAssign = arr[i]
console.log("before returning: " + varToAssign)
return
}
}
console.log(varToAssign)
}
window.addEventListener('load', assignTheVar)Run Code Online (Sandbox Code Playgroud)