VS Code中JS代码部分标红原因及strict mode下正确写法咨询
代码标红原因及严格模式下的正确写法
常见标红原因(严格模式约束)
- 隐式全局变量:严格模式禁止未声明就直接赋值的变量,比如直接写
num = 10而不用let/const声明,会被标红报错 - 使用保留字作为标识符:比如用
let class = 5,class是JS保留字,严格模式下不允许 - 函数参数重名:比如
function check(num, num) {...},严格模式禁止重复的参数名 - 禁用八进制字面量:比如
let num = 014这种以0开头的八进制写法,严格模式不支持 - 删除不可删除的属性:比如
delete Math.PI,严格模式下不允许删除内置对象的不可配置属性
生成合数的严格模式合规代码示例
把严格模式声明放在.js文件最顶部,所有变量都用let/const显式声明,调整后的代码如下:
'use strict'; // 生成指定区间内的合数 function getComposites(min, max) { const compositeNumbers = []; // 遍历区间内每个数 for (let currentNum = min; currentNum <= max; currentNum++) { // 小于2的数不参与判断 if (currentNum < 2) continue; let isComposite = false; // 检查是否存在除1和自身外的因数 for (let i = 2; i <= Math.sqrt(currentNum); i++) { if (currentNum % i === 0) { isComposite = true; break; } } if (isComposite) { compositeNumbers.push(currentNum); } } return compositeNumbers; } // 测试调用 const result = getComposites(2, 100); console.log('生成的合数:', result);
核心注意事项
'use strict';必须放在脚本最开头,任何代码(包括注释)之前,否则严格模式不会生效- 所有变量必须通过
let/const声明,禁止直接赋值未声明的变量 - 函数内部的临时变量(比如循环里的
i、currentNum)也要显式声明 - 避免使用JS保留字(如
let、const、class、function等)作为变量名或函数名
内容的提问来源于stack exchange,提问作者cinnamond
相关产品推荐
相关产品推荐

