Javascript 带Es5和Es6的闭合件

Javascript 带Es5和Es6的闭合件,javascript,closures,arrow-functions,Javascript,Closures,Arrow Functions,上述代码运行良好 当我用箭头函数编写代码时,它不起作用 var add = function add(x, z) { if (z == undefined) { return function(y) { return x + y; } } else { return x + z } } 只是一个错误的语法,箭头函数应该声明为 将添加(x,z)=>替换为(x,z)=>除了错误的语法外,什么都没有。玩得开心 var add = add(x, z) =

上述代码运行良好 当我用箭头函数编写代码时,它不起作用

var add = function add(x, z) {
  if (z == undefined) {
    return function(y) {
      return x + y;
    }
  } else {
    return x + z
  }
}

只是一个错误的语法,箭头函数应该声明为


添加(x,z)=>
替换为
(x,z)=>

除了错误的语法外,什么都没有。玩得开心

var add = add(x, z) => {
  if (z == undefined) {
    return (y) => {
      return x + y;
    }
  } else {
    return x + z
  }
}

请删除add关键字,尝试使用const和let declaratio,因为它们是块作用域,使用var在必要的内存中分配,并在JS中使用varables

var add = (x, z) => {
  if (z == undefined) {
    return (y) => {
      return x + y;
    }
  } else {
    return x + z;
  }
}

删除括号前面的
添加
add(x,z)
->
(x,z)
。没有任何东西告诉你他不需要将
add
设置为全局范围…如果他需要在另一点上使用它,他可以在函数或类中创建一个块,记住这一点,因为它可能会在将来导致问题@LiadYogevand如果他在不同的领域使用它?关键是,如果他需要将它声明为一个var,那么将它声明为一个var毫无疑问是可以的。如果他在类中的不同范围内使用,他可以在任何函数之外声明,并且所有函数都可以访问它,或者如果它需要在类中使用,那么导出它很简单,但关键是我在JS中解释了var的使用,在行刑开始的时候,他就失去了记忆,也许他没有用。
const add = (x, z) => {
  if (z == undefined) {
    return (y) => {
      return x + y;
    }
  } else {
    return x + z
  }
}