JavaScript中如何检测未定义变量?现有代码报错求助
正确检测未定义变量的方案
你的代码存在两个关键问题,导致了ReferenceError:
- typeof判断错误:
typeof返回的是字符串类型,你应该和字符串'undefined'对比,而非直接和undefined这个值比较。 - 变量作用域问题:
else块内用let声明的profileChart是块级作用域变量,出了这个块就无法被访问,下次执行判断时变量依然处于未定义状态。
修正后的代码
// 先在外部作用域声明变量,保证后续判断和使用能访问到 let profileChart; if (typeof profileChart !== 'undefined' && profileChart) { profileChart.destroy(); } else { profileChart = new Chart( pisteElevationProfileChart, configPiste ); }
额外说明
- 加入
&& profileChart是为了避免变量已声明但未赋值(比如初始为null)的情况,确保调用destroy()时变量是有效的Chart实例。 - 确保
profileChart的作用域能覆盖所有需要判断和使用它的代码区域,避免因作用域隔离导致的访问问题。
内容的提问来源于stack exchange,提问作者spreaderman
相关产品推荐
相关产品推荐

