当前位置: 首页 > backend >正文

VUE3报错 ReferenceError: Cannot access ‘openInit‘ before initialization

问题描述:
     组件展示数据,调用openInit方法,提示ReferenceError: Cannot access 'openInit' before initialization 
 

watch([() => props.baseDetail, () => props.activeName], // 监听这两个数据([newBaseDetail, newActiveName], [oldBaseDetail, oldActiveName]) => {// 判断两个条件if (JSON.stringify(newBaseDetail) !== '{}' && newActiveName === 'basicOneView') {openInit()}},{ deep: true, immediate: true }
)const  openInit = () => {xxxxxx
}

百度后得知:const 或 let 声明的函数变量需要等到声明的位置才会被初始化。在这个初始化之前,变量的值是 undefined,但因为它是常量 const,你不能在赋值之前使用它。constlet 变量声明会被提升,但它们不会被初始化。换句话说,虽然变量声明会被提升到作用域的顶部,但赋值操作会保留在它的原始位置。因此,如果你在变量赋值之前访问该函数,JavaScript 会抛出 ReferenceError,因为变量被提升了,但值还没有赋给它。


解决方法:
使用function声明方法,这种会被提升,并且可以在声明之前调用
 

百度了原因使用function声明不会抛出异常是因为:

function 声明会被整体提升并立即初始化,这意味着它在代码的任何位置都可以使用。而 constlet 声明的变量只能在初始化之后才能使用。如果你试图在初始化之前使用它们,JavaScript 会抛出 ReferenceError

最后代码改成这样就行

function openInit(){xxxx
}

http://www.xdnf.cn/news/4077.html

相关文章:

  • 【Qt】配置环境变量
  • educoder平台课-Python程序设计-8.文件
  • 价格识别策略思路
  • 第16章 监控和排除日志记录错误
  • 牛客 Wall Builder II 题解
  • Redis 数据类型详解(二):Hash 类型全解析
  • 数据结构-希尔排序(Python)
  • 立夏三候:蝼蝈鸣,蚯蚓出,王瓜生
  • 【AI学习】DeepSeek-R1是如何训练的?
  • Kdump 收集器及使用方式
  • archlinux安装waydroid
  • 查看并升级Docker里面Jenkins的Java17到21版本
  • 双目测量中的将视差图重投影成三维坐标图
  • 某信服EDR3.5.30.ISO安装测试(二)
  • kotlin 03flow-stateFlow和sharedFlow企业中使用
  • 青听音乐 1.0.6| 全网音乐免费听,无损下载,4条音源,界面简洁无广告
  • Nacos源码—3.Nacos集群高可用分析一
  • 【QT】QT中的软键盘设计
  • C# 方法(局部函数和参数)
  • [前端]异步请求的竞态问题
  • 代码随想录第34天:动态规划7(打家劫舍问题:链式、环式、树式房屋)
  • STA中的multi_cycle 和false_path详细讨论
  • macOS 上是否有类似 WinRAR 的压缩软件?
  • Qt6.8中进行PDF文件读取和编辑
  • LeetCode:返回倒数第k个结点
  • MyBatis 一对多与多对一映射详解教程
  • macbook install chromedriver
  • 百度golang开发一面
  • SpringBoot集成CXF框架,实现WebService
  • 2025系统架构师---论面向对象的软件设计