JS for循环内if块执行return后为何无法打印已赋值变量?
核心原因
你对return的作用范围理解存在偏差:只要函数执行到return语句,就会立刻终止整个当前函数的运行,函数体内return之后的所有代码——不管是写在判断块里、循环里还是循环外——都不会再被执行。
第一段代码的执行流程拆解
- 页面load事件触发后,
assignTheVar函数开始执行,进入for循环遍历数组 - 遍历到索引为3的数组项
'this one'时,首先执行varToAssign = arr[i],变量赋值确实已经完成 - 紧接着执行到
return语句,函数直接退出,后续所有逻辑全部被截断 - 写在for循环外部的
console.log(varToAssign)属于return语句之后的代码,根本没有获得执行机会,自然不会输出任何内容
如果要验证赋值操作确实已经完成,可以把打印语句挪到return之前,就能看到正确输出:
if(arr[i] == 'this one') { varToAssign = arr[i] console.log(varToAssign) // 此处可正常打印'this one' return }
移除return后可正常打印的原因
删掉if块内的return后,赋值完成后循环会正常执行到遍历结束,退出循环后就会顺次执行后面的console.log(varToAssign)语句,因此可以正常看到赋值后的变量值。
内容的提问来源于stack exchange,提问作者user5481714
相关产品推荐
相关产品推荐

