Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在私有函数中访问全局(javascript)变量_Javascript_Variables_Onclick_Global - Fatal编程技术网

在私有函数中访问全局(javascript)变量

在私有函数中访问全局(javascript)变量,javascript,variables,onclick,global,Javascript,Variables,Onclick,Global,我目前正在为学习目的开发一个计算器,所有的东西都可以用某种方式工作,但不是我想要的方式 下面是代码的累加部分: HTML: <input type="number" id="int1" /> <input type="number" id="int2" /> <input type="button" onClick="sumOf();" /> <div id="result"></div> // To display the resu

我目前正在为学习目的开发一个计算器,所有的东西都可以用某种方式工作,但不是我想要的方式

下面是代码的累加部分:

HTML:

<input type="number" id="int1" />
<input type="number" id="int2" />
<input type="button" onClick="sumOf();" />
<div id="result"></div>  // To display the result
现在的情况是,如果我通过onClick事件调用函数,它将导致NaN。在“未定义”中检查int的结果类型。所以我把变量放在函数中,它工作得很好,因为现在函数可以访问它们

我的问题是如何访问函数外部的变量?我尝试创建一个对象,但在onClick事件中引用对象内部的正确函数时遇到问题,我尝试了“objectName.functionInsideTheObject();”。结果是它不起作用

我怎样才能做到这一点?将为其他计算添加新函数,并且一直复制粘贴变量是很繁琐的

编辑:

我的问题与变量声明中的“.value”有关。如果我声明了一个变量:

var int1 = document.getElementById("int1");  // Not getting the value directly
var int2 = document.getElementById("int2");
然后引用函数中变量的值,如下所示:

function sumOf() {
  result.innerHTML = parseFloat(int1.value) + parseFloat(int2.value);
}
int1 = document.getElementById("int1").value;

它很好用。我不知道为什么。值在全局范围内不起作用。仍然不完美,但不那么乏味。

我相信,如果你像这样创建它:

function sumOf() {
  result.innerHTML = parseFloat(int1.value) + parseFloat(int2.value);
}
int1 = document.getElementById("int1").value;

如果没有var,那么它就是一个全局变量

您声明变量的方式是正确的

这些变量在函数中作为参数填充时是NaN的

function sumOf(int1, int2) {
  result.innerHTML = parseFloat(int1) + parseFloat(int2);
}
您应该像这样调用函数

function sumOf() {
  result.innerHTML = parseFloat(int1) + parseFloat(int2);
}
function sumOf() {
  var int1 = document.getElementById("int1").value;
  var int1 = document.getElementById("int2").value;
  var result = document.getElementById("result");

  result.innerHTML = parseFloat(int1) + parseFloat(int2);
}
但是我认为如果你像这样声明你的函数会更好

function sumOf() {
  result.innerHTML = parseFloat(int1) + parseFloat(int2);
}
function sumOf() {
  var int1 = document.getElementById("int1").value;
  var int1 = document.getElementById("int2").value;
  var result = document.getElementById("result");

  result.innerHTML = parseFloat(int1) + parseFloat(int2);
}

因为变量在函数之外,所以即使使用
var
,它们也是全局变量。他的问题是他用函数参数跟踪全局变量。这是真的,但他在全局范围中将它们声明为局部变量,因此它们仍然是全局变量。结果是,无论哪种方式,都是NaN。带参数和不带参数。在输入字段中输入任何值之前,变量在全局scrope中声明。因此,据我所知,页面加载时,字段没有值(因此为什么int1和int2=NaN),并且在获取值时不会更新变量。