在JavaScript中,何谓';函数表达式始终是常量值';?

在JavaScript中,何谓';函数表达式始终是常量值';?,javascript,ecmascript-6,Javascript,Ecmascript 6,我一直在关注JavaScript ES6的w3schools教程,并在展示了一些箭头函数的示例代码之后: const x = (x, y) => x * y; 他们声明如下 使用const比使用var更安全,因为函数表达式总是常量 我不完全理解他们在这里的意思。他们是指我不能在表达式之后编辑箭头函数吗?即使是这样,那到底是如何使const的使用比var更安全呢?如果我写下: var z = (x, y) => x * y; z = x => x *= -1; 好吧,这样做不

我一直在关注JavaScript ES6的w3schools教程,并在展示了一些箭头函数的示例代码之后:

const x = (x, y) => x * y;
他们声明如下

使用const比使用var更安全,因为函数表达式总是常量

我不完全理解他们在这里的意思。他们是指我不能在表达式之后编辑箭头函数吗?即使是这样,那到底是如何使const的使用比var更安全呢?如果我写下:

var z = (x, y) => x * y;
z = x => x *= -1;

好吧,这样做不会有任何错误

var z = (x, y) => x * y;
z = x => x *= -1;
但是,正如您所知,函数旨在包含可重用代码,并且函数声明为稍后调用。 如果对函数表达式使用
var
,这意味着以后可以对其进行更改,您将丢失所声明的函数

您在第1行声明了一个函数,但没有使用它,您在第2行声明了另一个函数,这意味着第一行根本不需要

您的代码相当于下面的代码块

function not_used(x, y) {
  return x * y;
}
function used(x) {
  return x * -1;
}

那么,为什么要声明一个不使用的函数呢?

将z声明为const将确保以后不会重写该函数

使用var将允许覆盖函数z,下面代码中的第2行将使用函数(x)=>x*=-1更新z

var z = (x, y) => x * y; // this code will be forgotten
z = x => x *= -1; // No Error
如果使用const,第2行将给出错误,因为z值无法更改

const z = (x, y) => x * y; // Final expression - cannot be changed
z = x => x *= -1; // Error

不会有坏事发生。但一般来说,
var
是危险的。因此,这里的另一种选择是让。但这里的要点是,您通常不希望将其他内容重新分配给函数。所以你使用了const,这样你就不会意外地分配了其他的东西。那句话毫无意义。任何表达式的计算结果都是“常量”值。你可以考虑阅读比W3Studio更好的教程。