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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:40:29