You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么无法访问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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:54:04