我正在尝试创建一个包含2个方法的对象。第一个使用两个提示输入两个数字,第二个将数字加在一起。当我运行代码时,数字要么连接,要么返回NaN
。我在数字上使用parseInt()
但没有效果。
这段代码有什么问题?为什么数字没有通过?
var summator = {
val1: 0,
val2: 0,
run: function() {
this.val1 = prompt('enter a value');
var newVal1 = parseInt(this.val1);
this.val2 = prompt('enter another value');
var newVal2 = parseInt(this.val2);
},
sum: function(newVal1, newVal2) {
alert(newVal1 + newVal2);
}
}
summator.run();
summator.sum();
答案 0 :(得分:1)
您没有将任何内容传递给sum
。
您的代码需要两个参数。
newVal1
函数中的 newVal2
和run
与sum
答案 1 :(得分:1)
修改代码如下 -
var summator = {
val1: 0,
val2: 0,
run: function() {
this.val1 = prompt('enter a value');
newVal1 = parseInt(this.val1);
this.val2 = prompt('enter another value');
newVal2 = parseInt(this.val2);
},
sum: function() {
alert(newVal1 + newVal2);
}
}
summator.run();
summator.sum();
var newVal1
函数run()
中的newVal1
使run()
位于sum()
的范围内,因此位于newVal1
newVal2
和{ {1}}不可用,因此您无法访问这两个值。
因此,我已将这两个变量设为全局范围,因此您不需要在sum()
的参数列表中指定它们。
newVal1
和newVal2
var summator = {
val1: 0,
val2: 0,
run: function() {
this.val1 = prompt('enter a value');
this.val1 = parseInt(this.val1);
this.val2 = prompt('enter another value');
this.val2 = parseInt(this.val2);
},
sum: function() {
alert(this.val1 + this.val2);
}
}
summator.run();
summator.sum();
答案 2 :(得分:0)
我会run
返回从用户输入中获取的值,然后将其传递给sum
方法:
var summator = {
run: function() {
var val1 = prompt('enter a value');
var val2 = prompt('enter another value');
return {val1: parseInt(val1), val2: parseInt(val2)};
},
sum: function(newVal1, newVal2) {
alert(newVal1 + newVal2);
}
}
var vals = summator.run();
summator.sum(vals.val1, vals.val2);
我稍微修改了你的代码,因为这个val 1和val2不需要存储,因为它们在函数返回后没有被使用。
答案 3 :(得分:0)
修改您的代码如下:
var summator = {
val1: 0,
val2: 0,
run: function() {
this.val1 = prompt('enter a value');
var newVal1 = parseInt(this.val1);
this.val2 = prompt('enter another value');
var newVal2 = parseInt(this.val2);
summator.sum(newVal1, newVal2);
},
sum: function(newVal1, newVal2) {
alert(newVal1 + newVal2);
}
}
summator.run();
它会返回两者的加法,因为你已经解析了输入。