声明并将值分配给作用域内的变量并尝试从 ouside 获取它不起作用,而仅分配



在经历了一段时间后,我又开始学习JavaScript了。以下是我想在标题中说的一个例子

function randomFunction(){
for(i = 0; i < 10; i++){
x = i;
}
return x;
}
console.log(randomFunction());

这返回了x的值,没有任何错误,但不是x = i,如果我使用let x = i;,现在x是未定义的错误。它是有定义的,对吧?我的意思是let x = 5;同时定义和赋值,那么let x = i不应该这样做吗?或者我可以只给x赋值而不给它赋值(i是另一个变量(。

另外,我还有另一个问题,你能调用一个函数吗?这个函数首先被声明为一个接受参数的函数,而不提供任何参数?例如

function randomFunction(x){
return "Hello World";
}
console.log(randomFunction());

当我只测试那个特定的函数时,我确实得到了Hello World作为回报,但当我在其他项目中使用类似的想法时,我会得到一些错误(但我记不清错误是什么了(。我只是想知道我能做到吗?这样我就可以排除这不是问题所在,并在其他地方寻找bug。

所以这里出现了一些问题:

  1. 不要使用文字字符串"this.num1 + this.num2",而是使用将变量相加的表达式this.num1 + this.num2
  2. 您在屏幕上未显示的元素上使用了事件侦听器,所以如何单击它?您可能想在idbutton上使用click事件,而不是demo
  3. 根据经验,我认为将UI逻辑与类逻辑结合起来是不好的。为了将来使用,通常最好将它们分开

好运

class Sum {
constructor(num1, num2) {
this.num1 = num1;
this.num2 = num2;
}
add() {
this.result = this.num1 + this.num2;
}
}
const s = new Sum(6, 7);
document.getElementById("button").addEventListener("click", () => {
s.add();
displayResult(s.result);
});
function displayResult(result) {
document.getElementById("demo").innerText = result;
}
<button id="button">Click</button>
<p id="demo"></p>

您不需要add函数中的引号,因此您丢失了引号。nums 前的this

this.result = this.num1 + this.num2

但是,当您将字符串传递给构造函数时,它只会连接值,因此输出将是"ab">

如果这些应该是变量,那么应该是:

var a = 5;
var b = 7;
const s = new Sum(a, b);

这里是您的代码:

class Sum {
constructor(num1, num2) {
this.num1 = num1;
this.num2 = num2;
}

add() {
this.result = this.num1 + this.num2;
}

displayResult() {
document.getElementById("demo").innerText = this.result;
}
}
const s = new Sum("a", "b");
document.getElementById("button").addEventListener("click", () => {
s.add();
s.displayResult();
});
<button id="button">Click</button>
<p id="demo"></p>

相关内容

最新更新