随着前端技术的不断发展, ECMAScript 语法标准也在不断更新。在 ES8 中,一些老旧的语法已经被废弃掉了。本文将详细介绍这些废弃语法, 以及它们的深层含义和指导意义。
为什么会废弃这些语法
在 JavaScript 的初期版本中,有一些语法被广泛使用,但是随着语言的发展,它们的存在变得越来越麻烦和不必要。因此,这些语法在 ES8 中被废弃掉了。
废弃语法的存在会给将来的语言维护带来问题,因为它们会使语言规范变得更加复杂,同时也会让开发者在使用这些语法时出现混淆和错误。
被废弃的语法
1. Function.prototype.arguments 和 Function.prototype.caller
Function.prototype.arguments 和 Function.prototype.caller 都是指针,其中 Function.prototype.arguments 是指向函数参数列表的指针,而 Function.prototype.caller 则指向调用该函数的函数。
这两个语法的问题在于,它们会让 JavaScript 引擎在进行代码优化时变得复杂。因此,在 ES8 中,这两个语法被废弃掉了。
-- -------------------- ---- ------- -------- ----- - --------------------------- -- --- -- -- ------------------------ -- --- - -------- ----- - ------ -- --- - ------
2. 简写 octal
在 JavaScript 中,octal 表示基数为8的数字,以0开头的数字就是 octal。
var x = 010; // 八进制的8 console.log(x); // 8
但是,这样的语法有时候会造成混淆。在 ES8 中,使用简写 octal 的语法被废弃掉了。
var y = "\251"; // 八进制的251 console.log(y); // %
3. 对象 proto
每一个 JavaScript 对象都有一个 proto 属性,它指向该对象的原型。但是在 ES8 中,对象 proto 属性已经被废弃掉了。
var obj = {}; console.log(obj.__proto__); // {} // ES6 中的语法 var obj2 = Object.create(null); console.log(obj2.__proto__); // undefined
在 ES6 中引入了 Object.setPrototypeOf 和 Object.getPrototypeOf 用于替代 proto。
4. Function 构造函数
使用 Function 构造函数来动态的创建一个函数是一种非常强大的功能,但是这样的方法也会让代码容易被攻击,因为它可以执行不受控制的代码。
在 ES8 中,使用 Function 构造函数来创建函数的语法被废弃掉了。
var add = new Function("x", "y", "return x + y"); console.log(add(1, 2)); // 3
推荐使用箭头函数或者普通函数来替代 Function 构造函数。
总结
废弃语法在 ES8 中被废弃掉,这些语法的存在会给将来的语言维护带来问题。开发者应该尽可能地应用最新的语法,以减少代码的混淆和错误。文章介绍了 Function.prototype.arguments 和 Function.prototype.caller、简写 octal、对象 proto、Function 构造函数 四种被废弃的语法,并给出了替代方案。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f04c5af6b2d6eab3a48a7e