代码: 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"
答案 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'