如何在javascript中执行我的Add函数

如何在javascript中执行我的Add函数,javascript,Javascript,我想用下面的代码执行我的add函数。但是我没有得到正确的语法 我已经试过了x.add(3,4)和x().add(3,4),但是没有用。 请告诉我哪里出了问题 <html> <body> <p> After a function has been stored in a variable, the variable can be used as a function: </p> <p i

我想用下面的代码执行我的
add函数
。但是我没有得到正确的语法

我已经试过了
x.add(3,4)
x().add(3,4)
,但是没有用。 请告诉我哪里出了问题

<html>
  <body>

    <p>
      After a function has been stored in a variable, 
      the variable can be used as a function:
    </p>

    <p id="demo">
      hello
    </p>

    <script>

      var x = function () {

        var add = function(a, b) { return a + b };

        var mul = function(a, b) { return a * b };

      }();

      document.getElementById("demo").innerHTML = x.add(3,4);

    </script>

  </body>
</html>


函数存储在变量中后,
该变量可用作函数:

你好

var x=函数(){ var add=函数(a,b){返回a+b}; var mul=函数(a,b){返回a*b}; }(); document.getElementById(“demo”).innerHTML=x.add(3,4);
如果要将
公共
变量声明到
构造函数
中,请使用
。并确保放置
new
以创建
new
您的
构造函数的实例
var x=新函数(){
this.add=函数(a,b){返回a+b};
this.mul=函数(a,b){返回a*b};
};
控制台日志(x.add(1,3));

console.log(x.mul(5,3))
这里要做的是定义一个名为
x
的函数,并在该函数中定义两个变量,分别名为
add
mul
。由于JavaScript在处理函数时遵循的规则(特别是在函数上下文中,请参阅本节),这些变量在函数之外是不可访问的。要访问它们,您需要使用函数
返回定义它们的对象:

var x = function() {
  var add = function(a,b){return a + b};
  var mul = function(a,b){return a * b};

  return {
    add: add,
    mul: mul
  };
}
现在可以通过调用函数来访问这些值,该函数将返回以下两个值:

var y = x();
document.getElementById("demo").innerHTML = y.add(3,4);

在其他函数中定义的函数不会自动供外部代码使用。它们的默认值是与任何其他局部变量存在相同的持续时间,当外部函数完成执行时,可用于垃圾收集

要保留它们,您需要指定如何使它们可用。其中一个选项是返回它们,添加一个结构来保存它们:

var x = function () {
  return {
    add: function(a,b){return a + b},
    mul: function(a,b){return a * b},
  };
}();
不过,至少到目前为止,外部功能并非绝对必要,可能会被删除:

var x = {
  add: function(a,b){return a + b},
  mul: function(a,b){return a * b},
};

似乎您希望
x
成为一个对象。正确的语法是

var x = {
  add: function(a,b){return a + b},
  mul: function(a,b){return a * b},
};
或者,如果您坚持使用(因为您在该范围内做的事情比您展示的要多),那么您会这样做

var x = (function () {
  function add(a,b){return a + b}
  function mul(a,b){return a * b}

  return {add, mul};
}());

请参见下面的注释:

//您可以将函数设置为“构造函数”,
//这意味着将从
//函数的调用。标准惯例是使用
//PascalCase用于构造函数函数名:
函数X(){
//稍后,当创建此对象的实例时,
//对象的成员可以通过标识
//它们与“this”对象实例一起使用。
//关于这一点,还有更多需要了解的(即,房地产
//正如我在这里展示的那样创建,但是方法通常是
//添加到函数的原型中)。
this.add=函数(a,b){返回a+b};
this.mul=函数(a,b){返回a*b};
}
//使用函数构造对象实例
让实例=新的X();
//然后,使用该实例及其关联成员。
//仅供参考:在未获取/设置时不要使用.innerHTML
//任何HTML。将.textContent用于原始文本。
document.getElementById(“demo”).textContent=“Add:”+instance.Add(3,4);
document.getElementById(“demo”).textContent+=“| Multiply:”+instance.mul(3,4)
函数存储在变量中后,
该变量可用作函数:


hello

使用
this.add
var mul
更改
var add
var mul
为什么要将
add
mul
放在函数
x
中?您只需去掉
x
,将
add
mul
函数分开,然后运行
add(3,4)
mul(3,4)
,而您的代码可能会提供有效的解决方案,您应该始终提供一个书面解释,并解释为什么它改进了OP的问题。在这种情况下,这不是解决此特定问题的好方法,因为函数不再存储为普通变量@Bergi你能解释一下原因吗?@MaheerAli请按照链接详细解释