Kas*_*per 8 javascript ecmascript-6
以不同的方式在ES6/ES2015中创建顶级功能有哪些优点/缺点?或者这仅仅是品味/风格指南等问题?
选项1:
function square(n) {
return n * n;
}
Run Code Online (Sandbox Code Playgroud)
选项2:
var square = function(n) {
return n * n;
};
Run Code Online (Sandbox Code Playgroud)
选项3:
var square = (n) => {
return n * n;
};
Run Code Online (Sandbox Code Playgroud)
选项4:
const square = (n) => {
return n * n;
};
Run Code Online (Sandbox Code Playgroud)
T.J*_*der 10
注意:我已将此作为社区维基发布,我们都可以添加到列表中,澄清等等.请不要发表意见.保持客观.
或者这仅仅是品味/风格指南等问题?
风格会产生强烈的影响,是的,但是我们可以根据选项的功能和运行时特性进行一些客观的观察,这些选项可用于确定哪个适用于给定的用例.
选项1:
Run Code Online (Sandbox Code Playgroud)function square(n) { return n * n; }
square = ...(或后来的函数声明)覆盖.square.prototype,即使我们不打算将它作为构造函数.new square在函数中使用,则将由函数的调用方式决定,因为它是"正常"函数.选项2:
Run Code Online (Sandbox Code Playgroud)var square = function(n) { return n * n; };
newsquare.prototype,即使我们不打算将它作为构造函数.n * n)将起作用,但可能不会执行编码器所期望的.this变量.square = ...在函数中使用,则将由函数的调用方式决定,因为它是"正常"函数.选项2.5 :( 我添加了这个)
Run Code Online (Sandbox Code Playgroud)var square = function square(n) { return n * n; };
与选项2完全相同,除了在ES5和更早版本上,该函数具有真实的名称(square.prototype).(请注意,名称不必与变量名称相同,尽管在此示例中.)
选项3:
Run Code Online (Sandbox Code Playgroud)var square = (n) => { return n * n; };
也可以写成:
var square = n => n * n;
Run Code Online (Sandbox Code Playgroud)
new squarevar.this)将失败,并提供信息性错误(square).square = ...(但如果你需要square.prototype功能,你可以使用rest参数).new square,也没有TypeError: square is not a constructor.但是现代JavaScript引擎已经优化了arguments如果你不使用它的创建,并且设置不太可能arguments是一个巨大的成本.this变量.arguments在函数中使用它,它将使用与arguments定义函数的代码相同,因为箭头函数关闭 this(而不是根据它们的调用方式设置它).选项4:
Run Code Online (Sandbox Code Playgroud)const square = (n) => { return n * n; };
也可以写成:
const square = n => n * n;
Run Code Online (Sandbox Code Playgroud)
varthis.this)将失败,并提供信息性错误(this).square = ...(参见选项3的注释).square.prototype.new square在函数中使用它,它将使用与TypeError: square is not a constructor定义函数的代码相同,因为箭头函数关闭 arguments(而不是根据它们的调用方式设置它).选项5 :( 我添加了这个)
Run Code Online (Sandbox Code Playgroud)let square = (n) => { return n * n; };
也可以写成:
let square = n => n * n;
Run Code Online (Sandbox Code Playgroud)
完全类似于选项4,除了它可以在以后通过覆盖 const
| 归档时间: |
|
| 查看次数: |
1129 次 |
| 最近记录: |