Функции внутри объекта не работают правильно - Javascript - PullRequest
0 голосов
/ 15 января 2020

Это моя первая "программа", или как вы хотите ее назвать, используя JavaScript.

Мне нужно изменить avg, total и grade, используя 2 функции: calcAVG и calcGrade. Я не могу заставить функцию calcAVG работать правильно. Я не могу понять, почему функция не будет изменять значение avg или total. В программе я не могу изменить 5 верхних свойств объекта (это для назначения).

Также функция calcAVG работает при вызове в console.log. Так у меня есть какая-то синтаксическая ошибка?

var student = {
	fullName : 'Amanda Corbin',
	scores : [90,50,88,56,89],
	avg : 0,
	total : 0,
	grade : '',
	
	calcAvg : function(scores,avg,total) {
		for (var i = 0; i < this.scores.length; i++) {
			this.total += this.scores[i];
		}
		this.avg = ( this.total / this.scores.length );
		return (this.avg);
	}
	
	
	 calcGrade : function(avg,grade) {
		
		if (this.avg >=90){
			console.log("grade is A");
			this.grade = 'A';
		} else if (this.avg >= 80 && this.avg <90){
			console.log("grade is B");
			this.grade = 'B';
		} else if (this.avg >= 70 && this.avg <80){
			console.log("grade is C");
			this.grade = 'C';
		} else if (this.avg >= 60 && this.avg <70){
			console.log("grade is D");
			this.grade = 'D';
		} else if (this.avg <60){
			console.log("grade is F");
			this.grade = 'F';
		}
		
		
		return (this.grade);
	}


console.log(student);

console.log(student.calcAvg());
console.log(student.calcGrade());

Ответы [ 3 ]

1 голос
/ 15 января 2020

Если вы поместите свой код в редактор, вы увидите некоторые недостающие части. как , и }. Другое дело, что вам не нужно использовать какие-либо параметры в этих функциях. вы не передаете никаких параметров в эти функции. там вы используете ключевое слово this. это выберет правильное свойство вашего student массива.

var student = {
	fullName : 'Amanda Corbin',
	scores : [90,50,88,56,89],
	avg : 0,
	total : 0,
	grade : '',
	calcAvg : function() {
		for (var i = 0; i < this.scores.length; i++) {
			this.total += this.scores[i];
		}
		this.avg = ( this.total / this.scores.length );
		return (this.avg);
	},
	calcGrade : function() {
		
		if (this.avg >=90){
			console.log("grade is A");
			this.grade = 'A';
		} else if (this.avg >= 80 && this.avg <90){
			console.log("grade is B");
			this.grade = 'B';
		} else if (this.avg >= 70 && this.avg <80){
			console.log("grade is C");
			this.grade = 'C';
		} else if (this.avg >= 60 && this.avg <70){
			console.log("grade is D");
			this.grade = 'D';
		} else if (this.avg <60){
			console.log("grade is F");
			this.grade = 'F';
		}
		
		
		return (this.grade);
	}

}


console.log(student.calcAvg());
console.log(student.calcGrade());
1 голос
/ 15 января 2020

Вам не хватает нескольких запятых и закрывающих };

var student = {
  calcAvg: function(scores, avg, total) {

  }, // missing a comma here
  calcGrade: function(avg, grade) {

  }, // missing a comma here
}; // missing a closing bracket here
0 голосов
/ 15 января 2020

Крис прав в комментарии выше.

Ваш окончательный код должен выглядеть следующим образом

var student = {
    fullName : 'Amanda Corbin',
    scores : [90,50,88,56,89],
    avg : 0,
    total : 0,
    grade : '',

    calcAvg : function(scores,avg,total) {
        for (var i = 0; i < this.scores.length; i++) {
            this.total += this.scores[i];
        }
        this.avg = ( this.total / this.scores.length );
        return (this.avg);
    },


     calcGrade : function(avg,grade) {

        if (this.avg >=90){
            console.log("grade is A");
            this.grade = 'A';
        } else if (this.avg >= 80 && this.avg <90){
            console.log("grade is B");
            this.grade = 'B';
        } else if (this.avg >= 70 && this.avg <80){
            console.log("grade is C");
            this.grade = 'C';
        } else if (this.avg >= 60 && this.avg <70){
            console.log("grade is D");
            this.grade = 'D';
        } else if (this.avg <60){
            console.log("grade is F");
            this.grade = 'F';
        }


        return (this.grade);
    }
}


console.log(student);

console.log(student.calcAvg());
console.log(student.calcGrade());

Вот вывод для того же самого в песочнице coderpad ссылка (Просто скопируйте и вставьте вышеуказанный код, и вы увидите результат.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...