var highScore = 0
是否与循环分开? scores[i]
始终不是greater than 0
吗?我需要有人来分解if语句是如何工作的,我需要了解highScore = scores[i]
如何给我回到最高的数字。这个练习出现在我正在阅读的一本书中,以学习JavaScript,我觉得这是我的想法。谁能摆脱光明?谢谢。
if语句如何在此代码中运行?如果它的值为0,那么highScore如何作为在if语句中使用的变量相关?它突然输出值似乎是合乎逻辑的数组中的最大数字。
var scores = [60, 50, 60, 58, 54, 54, 58, 50, 52, 54, 48, 69, 34, 55, 51, 52, 44, 51, 69, 64, 66, 55, 52, 61, 46, 31, 57, 52, 44, 18, 41, 53, 55, 61, 51, 44];
var highScore = 0;
for (i = 0; i < scores.length; i++) {
output = "Bubble #: " + i + " scores: " + scores[i];
console.log(output);
if (scores[i] > highScore){
var highScore = scores[i];
}
}
答案 0 :(得分:2)
问题在于:
if (scores[i] > highScore){
**var highScore = scores[i];**
}
您只需将其更改为:
if (scores[i] > highScore){
highScore = scores[i];
}
一切都应该完美。
答案 1 :(得分:2)
var highScore
您正在
if (scores[i] > highScore){
var highScore = scores[i];
}
删除var将添加到全局highScore
答案 2 :(得分:2)
if (scores[i] > highScore){
var highScore = scores[i];
}
如果索引的分数大于highScore(起始值为0),则会将highScore
重新分配给该值。
所以基本上,假设数组的第一个索引高于0,这是因为它是60 - 这是新的高分。
然后,在索引1为50时,再次运行:
if (scores[i] > highScore){
var highScore = scores[i];
}
50岁高于60岁吗?不,因此,highScore
保持在60的值。依此类推。
编辑:
但是您的代码错误,您在范围内创建了一个新变量highScore
。您需要重新分配初始变量。
因此,
highScore = scores[i];
答案 3 :(得分:2)
我认为你对变量的范围感到困惑。如果您在程序中使用关键字<ion-list margin-top>
<ion-item>
<ion-label> <ion-icon name="person"></ion-icon></ion-label>
<ion-input [(ngModel)]="userData.fullname" value="{{fullname}}" type="text"></ion-input>
</ion-item>
<ion-item>
<ion-label> <ion-icon name="md-phone-portrait"></ion-icon></ion-label>
<ion-input [(ngModel)]="userData.phone" value="{{phone}}" type="text"></ion-input>
</ion-item>
<ion-item>
<ion-label> <ion-icon name="md-mail"></ion-icon></ion-label>
<ion-input [(ngModel)]="userData.Email" value="{{Email}}" type="text"></ion-input>
</ion-item>
<ion-item>
<ion-label> <ion-icon name="md-megaphone"></ion-icon></ion-label>
<ion-textarea [(ngModel)]="userData.Deskripsi" value="{{Deskripsi}}" type="text"></ion-textarea>
</ion-item>
<ion-item>
<button ion-button color="secondary" (click)="update();" float-right>Update</button>
</ion-item>
</ion-list>
声明变量,它将视为全局范围。这意味着您可以在程序的任何位置访问更新的值。这就是为什么它在for循环执行后给出最高数字作为输出。由于这个原因,您的代码将正常运行。DEMO HERE。您可以将输出69视为警报。如果您从
var
到
if (scores[i] > highScore){
var highScore = scores[i];
}
现在您没有获得最大数字,它会提醒值 if (scores[i] > highScore){
let highScore = scores[i];
}
,因为变量0
声明为highScore
,它将被视为块级范围不是全球范围。 DEMO HERE。因此,当您在for循环之外放置警报时,它将从全局范围let
varibale获取值。
我希望你现在可以很容易地理解if条件是如何工作的。
答案 4 :(得分:1)
Javascript工作得非常好。
您已初始化highScore
两次。
这是变量的简单范围。
var highScore = 0;
for (i = 0; i < scores.length; i++) {
output = "Bubble #: " + i + " scores: " + scores[i];
console.log(output);
if (scores[i] > highScore){
var highScore = scores[i]; // ---- (2)
}
}
当您使用var
进行变量声明时,它将成为一个全局变量,这是您获得数组最高值的原因。
尝试使用阻止范围
的let(代替两个)希望这有帮助