为什么未定义的const变量会导致后续JS代码停止运行,如何声明待填充占位符?
问题解答
为什么你的代码无法运行
你示例代码里的const one = ;属于非法语法,JavaScript引擎在解析脚本阶段就会直接抛出SyntaxError(语法错误),直接终止整个脚本的执行,因此后续的点击事件绑定、showAlert函数定义逻辑都不会生效,点击按钮自然不会触发alert。
这是JavaScript的标准语法特性:const是用于声明只读常量的关键字,强制要求在声明的同时完成初始化赋值,无论是写const one;省略赋值,还是写const one = ;赋值内容为空,都是不符合语法规则的写法,都会直接触发语法错误终止脚本运行。
声明后续赋值的占位变量的方案
你可以根据需求选择以下两种方案:
- 如果后续需要给变量重新赋值,使用
let关键字即可。let支持先声明后赋值,不会触发语法错误,示例如下:
// 先声明占位 let one; // 后续逻辑中再赋值 one = 123; one = '字符串值也可以';
- 如果你不希望变量后续被重新赋值,只是初始化逻辑需要延后,可以给
const预先赋值为null或undefined占位:
// 先赋值null占位 const one = null; // 注意:这种方式后续不能再给one重新赋值,如果是引用类型值可以修改内部属性 // 示例:const user = {}; 后续可以修改属性 user.name = 'xxx',但不能重新赋值 user = {name:'xxx'}
注意:不推荐使用老旧的
var关键字声明变量,var存在变量提升、无块级作用域等设计缺陷,现代JS开发优先使用let和const。
内容的提问来源于stack exchange,提问作者canistrophedon
相关产品推荐
相关产品推荐

