gpt4 book ai didi

javascript - 使用 setInterval(),年龄如何在 "if"上升?

转载 作者:行者123 更新时间:2023-11-30 15:40:12 27 4
gpt4 key购买 nike

这是我在这个网站上要问的第一个问题,如果我的处理方式有误,请务必告诉我。

无论如何,在我创建的对象 (dog) 中,我有一个“实时”函数,它通过使用 javascript 的 setInterval 功能从年龄 (5) 开始计算我的狗的年龄。因此,通过键入“dog.live()”调用函数将继续执行函数的“if”部分,直到狗的年龄达到 15 岁,然后它将继续执行函数的“else”部分你这只狗死了多久了。

var dog = {
age : 5,
live : function() {

setInterval(function() {
var timer = this.age += 1;

if (this.age < 15) {
console.log("Dog lives another day at age " + this.age);
} else {
console.log("Dog has been dead for " + (timer - 15) + " years");
}
}.bind(dog), 1000);
}
}

dog.live();

"Dog lives another day at age 6"
"Dog lives another day at age 7"
...
"Dog has been dead for 0 years"
"Dog has been dead for 1 years"

现在,我明白了,在 setInterval 函数的“else”部分,它如何通过使用“timer”变量来增加年龄。但是,我对函数的“if”部分如何告诉狗有多大,如何自增感到困惑?据我所知,它不会自行增加,因为“var timer = this.age += 1;”只是声明一个变量,它本身不执行任何操作。我想知道狗的年龄在执行函数的“if”端时是如何增加的。

再次强调,如果我以错误的方式问这个问题,或者不允许这样的问题,请随时告诉我,我会进一步尝试改进我 future 的问题,谢谢!

最佳答案

增量有点令人困惑,因为它发生在行内。我会简化:

// Version 1
var timer = this.age += 1;

// Simpler 1
this.age += 1; // Could also use ++this.age; or this.age++;
var timer = this.age;

// Simpler 2
this.age = this.age + 1;
var timer = this.age;

每一行的第一行只是将 this.age 加 1以不同的方式。

上面的代码片段都做同样的事情,第一个只是一种“聪明”的写法。它的工作原理是因为评估顺序,所以 this.age += 1首先计算,这意味着正确的值存储在 this.age 中,然后被 timer 使用.

关于javascript - 使用 setInterval(),年龄如何在 "if"上升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40929634/

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