53. eval、with 等为何不推荐使用? 副本.md

查看飞书原文 ↗2,866 字符

1. 核心概念 (Core Concept)

eval() 和 with 是 JavaScript 中两种特殊的语言构造。eval() 函数可以将字符串作为 JavaScript 代码执行,而 with 语句则可以将一个对象的属性添加到当前作用域链的顶部。

2. 为什么不推荐使用它们? (The "Why")

不推荐使用 eval() 和 with 的主要原因在于:

3. API 与用法 (API & Usage)

3.1 eval()

典型(但不推荐)用法示例:

const x = 10;
const y = 20;
let result = eval('x + y + 5'); // result is 35

const codeString = "function sayHello() { console.log('Hello from eval!'); } sayHello();";
eval(codeString); // Output: Hello from eval!

3.2 with

典型(但不推荐)用法示例:

const person = {
  name: 'Alice',
  age: 30,
  city: 'New York'
};

// 不使用 with
console.log(person.name);
console.log(person.age);

// 使用 with (不推荐!)
with (person) {
  console.log(name); // 直接访问 person.name
  console.log(age);  // 直接访问 person.age
  // 如果在此处使用了一个变量名,且该变量在当前作用域和 person 对象中都存在,
  // 将优先访问 person 对象的属性。
  // console.log(city); // 直接访问 person.city
}

4. 关键注意事项 (Key Considerations)

5. 参考资料 (References)


原文链接与附件索引