主要观点:在 JavaScript 中弃用特性较为罕见,历史上仅with
语句被正式弃用。
关键信息:
with
语句早期引入,目的是简化对象操作,如with (car) { console.log(make); }
可直接访问对象属性。- 弃用
with
语句的原因是存在歧义,开发者和引擎难以确定所引用的变量或属性,易导致难以追踪的 bug,如const car = { make: 'Toyota' }; function showMake() { const make = 'Honda'; with (car) { console.log(make); } } showMake();
可能输出Toyota
或Honda
。 - 如今
with
语句仍存在但被视为不良实践,会导致行为难以理解和预测,应避免使用,可通过直接引用对象属性或使用解构赋值来替代,如const { make, model, year } = car;
。
重要细节: with
语句会扩展作用域链,在特定情况下会先在对象中查找变量。- 除
with
语句外,其他如arguments.callee
在严格模式和某些eval()
的使用也面临弃用或强烈不鼓励。文章原发表于https://www.trevorlasn.com/blog/the-only-javascript-feature-that-was-deprecated,由人工撰写并使用语法工具优化以提高清晰度。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。