何时以及为何使用这些不同的 Java 脚本函数声明格式?
When and why to use these various Java Script function declaration formats?
以下函数声明格式有什么区别?
什么时候用which更正确?
从初学者的角度和高层次(非深度)的角度来看,它们三者的工作原理似乎相同 - 因此这让人感到困惑并提出问题。
1.
const counter1 = function(num) {
var x = 0;
while (x < num) {
console.log(x);
x ++;
};
return 0;
};
2.
function counter2(num) {
var x = 0;
while (x < num) {
console.log(x);
x ++;
};
return 0;
};
3.
const counter3 = (num) => {
var x = 0;
while (x < num) {
console.log(x);
x ++;
};
return 0;
};
他们所有人看起来行为都一样。
实际上,您的三个示例之间存在不少差异。
因此,一方面,您在函数声明中使用 const 时必须小心。
counter1(5); // counter1 is undefined, this will fail
const counter1 = function(num) {
var x = 0;
while (x < num) {
console.log(x);
x ++;
};
return 0;
};
虽然该函数将被提升并可供使用(编辑:技术上 let
和 const
也被提升,但它们未初始化,因此您无法在声明它们之前访问它们,更多信息 .
counter2(5); // works fine
function counter2(num) {
var x = 0;
while (x < num) {
console.log(x);
x ++;
};
return 0;
};
另请注意,const
禁止重新分配变量,因此您不能稍后再说 const counter1 = {}
,而您可以使用 function
示例这样做。
就 function(num) {
与 (num) => {
之间的区别而言,在您的示例中没有区别。但是还是有些区别的……比如
const thisWillFail = () => {
console.log(arguments.length);
};
const thisWorks = function() {
console.log(arguments.length);
};
如果您不熟悉 arguments
对象,可以查找信息 here。
以下函数声明格式有什么区别? 什么时候用which更正确?
从初学者的角度和高层次(非深度)的角度来看,它们三者的工作原理似乎相同 - 因此这让人感到困惑并提出问题。
1.
const counter1 = function(num) {
var x = 0;
while (x < num) {
console.log(x);
x ++;
};
return 0;
};
2.
function counter2(num) {
var x = 0;
while (x < num) {
console.log(x);
x ++;
};
return 0;
};
3.
const counter3 = (num) => {
var x = 0;
while (x < num) {
console.log(x);
x ++;
};
return 0;
};
他们所有人看起来行为都一样。
实际上,您的三个示例之间存在不少差异。
因此,一方面,您在函数声明中使用 const 时必须小心。
counter1(5); // counter1 is undefined, this will fail
const counter1 = function(num) {
var x = 0;
while (x < num) {
console.log(x);
x ++;
};
return 0;
};
虽然该函数将被提升并可供使用(编辑:技术上 let
和 const
也被提升,但它们未初始化,因此您无法在声明它们之前访问它们,更多信息
counter2(5); // works fine
function counter2(num) {
var x = 0;
while (x < num) {
console.log(x);
x ++;
};
return 0;
};
另请注意,const
禁止重新分配变量,因此您不能稍后再说 const counter1 = {}
,而您可以使用 function
示例这样做。
就 function(num) {
与 (num) => {
之间的区别而言,在您的示例中没有区别。但是还是有些区别的……比如
const thisWillFail = () => {
console.log(arguments.length);
};
const thisWorks = function() {
console.log(arguments.length);
};
如果您不熟悉 arguments
对象,可以查找信息 here。