gpt4 book ai didi

javascript - javascript 中数字未从对象传递到方法

转载 作者:行者123 更新时间:2023-12-02 17:57:50 24 4
gpt4 key购买 nike

我正在尝试创建一个包含 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();

最佳答案

修改代码如下-

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()newVal1newVal2不可用,因此您无法访问这两个值。

因此,我已将这两个变量设置为作用域全局变量,因此您不需要在 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();

关于javascript - javascript 中数字未从对象传递到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com