JavaScript返回'内存'为0,即使我增加或减少其值

时间:2015-03-16 10:11:54

标签: javascript html

代码: http://pastebin.com/xGa9VLDY

问题:
我正在制作一个小计算器应用程序来磨练我的JavaScript技能,结果很好。但是,我遇到的问题是JavaScript将我的变量'memory'返回为0,即使值增加(或减少),我似乎无法弄清楚如何,所以计算器几乎无用,因为等号按钮只返回0.我试图在Chrome中使用控制台来增加值,只是为了测试,这是我的结果:

memory + 5
5

但是当我试图再次检查'记忆'的值时:

memory
0

这是我缺少的东西,还是只是一个愚蠢的小错误?

我尝试了什么:
正如你所看到的,我现在已经尝试将值存储在localStorage中,但无济于事,我看不出还能做什么。我最近从

切换
memory += textBox.value;

memory = memory + textBox.value;

但显然,这也不起作用。

修改

我现在遇到一个非常奇怪的问题:

memory: 0
textBox.value: "6"
parseInt(textBox.value): 6
memory + parseInt(textBox.value): 6
typeof(memory): "number"

这是文本框中仍然填充了数字的所有值,这是按下加号后的值:

memory: NaN
textBox.value: ""
parseInt(textBox.value): NaN
memory + parseInt(textBox.value): NaN
typeof(memory): "number"

2 个答案:

答案 0 :(得分:6)

控制台为您提供数学运算的结果,而不是将其存储在任何地方。

所以你从包含值memory的{​​{1}}开始。要制作5,您需要添加5,然后将结果存储回0

memory

有一个简写:

memory = memory + 5;

还有一个简单的加法1(因为它是一项非常常见的任务):

memory += 5;

虽然this is not considered best practise

关于++memory; 版本,您正在执行此操作,textBox的value属性是字符串,而不是数值。即使1234看起来像一个数字,它实际上是人物' 1',' 2',' 3'和' 4'。你可以高兴地包括一个'一个'或者' z'。要获得可以在数学表达式中使用的数值,需要解析字符串:

无论

textBox.value

取决于您是否希望textBox具有整数或浮点值。

在这里演示:http://jsbin.com/yijezifowu/1/edit?html,js,output

编辑:非常奇怪的问题'

您在pastebin代码中的mathStuff函数顶部对enteredValueInt = parseInt(textBox.value); // or enteredValueFloat = parseFloat(textBox.value); 进行了虚假调用:

emptyBox

因此,在尝试检索数字之前,请先清除文本框。

答案 1 :(得分:0)

memory + 5

是一个计算,它产生两个值之和,在你的情况下为0,因为内存为0.你想将值存储在memory中,但你需要将值赋给{ {1}}变量,如下所示:

memory

或简写版本:

memory = memory + 5;

详细了解赋值运算符here

此外,您必须确保您使用的操作员能够正常工作,如下:

memory += 5;

,而

'0' + 5 === '05'