为什么无法访问JavaScript函数内定义的常量newArr22的值?
问题原因
你的报错是JavaScript函数作用域的规则导致的:
- 使用
const/let在函数内部声明的变量,仅在函数的{}包裹的作用域内可访问,函数外部无法直接读取该变量,因此会抛出ReferenceError未定义错误。 - 你把变量定义移到函数外之后,变量属于全局作用域,全页面脚本都能访问,因此可以正常读取。
解决方案
推荐使用函数返回值的方式获取处理后的数组,避免污染全局作用域:
const initialArr = [ {name: 'eve'}, {name: 'john'}, {name: 'jane'} ] function newarr(){ const newArr22 = initialArr.map(v => ({...v, isActive: true})) // 将内部处理好的数组作为返回值抛出 return newArr22 } // 外部调用函数接收返回值即可 const processedArr = newarr() console.log(processedArr)
如果确实需要全局访问该变量,也可以省略变量声明关键字直接赋值(不推荐,会污染全局作用域):
function newarr(){ // 不写const/let,变量会默认挂载到全局作用域 newArr22 = initialArr.map(v => ({...v, isActive: true})) } newarr() console.log(newArr22)
内容的提问来源于stack exchange,提问作者Tech Tips
相关产品推荐
相关产品推荐

