Javascript 将加法结果赋给变量时,计算器不起作用。为什么?

Javascript 将加法结果赋给变量时,计算器不起作用。为什么?,javascript,html,Javascript,Html,我正在试验我的非常基本的Javascript,我发现了一个关于如何用JS制作非常基本的计算器的好方法 我试着跟着视频,但我不想只是复制粘贴他写的东西,所以我停下来试着做我认为是逻辑代码的事情…错了 问题就在这里 为什么这不起作用 我试图将与结果相关的输入分配给一个变量,但它不起作用 但是当我这样做的时候:就像在教程中那样 function addNum() { let first = parseInt(document.querySelector('.first').value); le

我正在试验我的非常基本的Javascript,我发现了一个关于如何用JS制作非常基本的计算器的好方法

我试着跟着视频,但我不想只是复制粘贴他写的东西,所以我停下来试着做我认为是逻辑代码的事情…错了

问题就在这里

为什么这不起作用

我试图将与结果相关的输入分配给一个变量,但它不起作用

但是当我这样做的时候:就像在教程中那样

function addNum() {
  let first = parseInt(document.querySelector('.first').value);
  let second = parseInt(document.querySelector('.second').value);
  document.querySelector('.resultt').value=first + second;
}
因此,无需将结果分配给变量,它就能工作

为什么?

当你这样做的时候

let result = document.querySelector('.resultt').value;
您正在将值从value属性复制到结果变量。在那之后,它们之间没有持续的链接,它们都只包含相同的字符串。这意味着以后,当您执行result=first+second时,您所做的就是更新result;这对价值没有任何影响

因此,您必须像在第二个代码块中那样重新赋值。

当您这样做时

let result = document.querySelector('.resultt').value;
您正在将值从value属性复制到结果变量。在那之后,它们之间没有持续的链接,它们都只包含相同的字符串。这意味着以后,当您执行result=first+second时,您所做的就是更新result;这对价值没有任何影响


因此,您必须像在第二个代码块中那样重新赋值。

非常感谢!如果说在这种情况下,不应该存在一个变量,其中的输入不会像结果输入那样从用户那里接收到任何东西,这是正确的吗?@marco-这完全是风格问题。它可能与函数是否应该返回a+b属于同一类;或常数结果=a+b;返回结果;大多数人喜欢前者,但后者通常便于调试,编译器/JavaScript引擎也会对它们进行同样的处理;在JavaScript中,源代码大小很重要,任何一个合适的缩微器都会处理这个问题。非常感谢!如果说在这种情况下,不应该存在一个变量,其中的输入不会像结果输入那样从用户那里接收到任何东西,这是正确的吗?@marco-这完全是风格问题。它可能与函数是否应该返回a+b属于同一类;或常数结果=a+b;返回结果;大多数人喜欢前者,但后者通常便于调试,编译器/JavaScript引擎也会对它们进行同样的处理;对于源代码大小很重要的JavaScript,任何合适的缩微器都将处理缩微。JavaScript使用传递值语义@费利克斯克林-只是对术语吹毛求疵而已。:-按值传递和按引用传递与变量赋值无关。它们是与将参数传递到函数相关的艺术术语。@T.J.Crowder:我假设同样的行为也适用,尽管一般来说,我知道它在JavaScript中适用?例如,对于简单的变量赋值,使用传递值的语言也会这样做。但也许不是…@FelixKling-可以理解.:-但它们实际上是分开的。例如,在C中,a=b始终只是将值从b复制到a,其中值是基元或对象引用,但如果将b传递到函数中,它可以是默认值,也可以是引用out或ref参数。但是除非他们最近添加了它,C仍然没有办法让A= B的意思是对C++的引用,比如C++ + Irc-但是我已经做了很多年了,我做过任何C++:-.j.j.Cuuld:谢谢:JavaScript使用了逐值语义。费利克斯克林-只是对术语吹毛求疵而已。:-按值传递和按引用传递与变量赋值无关。它们是与将参数传递到函数相关的艺术术语。@T.J.Crowder:我假设同样的行为也适用,尽管一般来说,我知道它在JavaScript中适用?例如,对于简单的变量赋值,使用传递值的语言也会这样做。但也许不是…@FelixKling-可以理解.:-但它们实际上是分开的。例如,在C中,a=b始终只是将值从b复制到a,其中值是基元或对象引用,但如果将b传递到函数中,它可以是默认值,也可以是引用out或ref参数。但是除非他们最近添加了它,C仍然没有办法让A= B平均值向B引用一个类似C++和IIrC的方法,但是我已经做了很多年了,没有做任何C++:-.j.j.Cuuld:谢谢。