О точке с запятой в ES6 при использовании return - PullRequest
0 голосов
/ 30 октября 2018

Я новичок в JS. Если я добавлю точку с запятой, как это ${this.name} is friends with ${el}; Я получу ошибку «Uncaught SyntaxError: missing) после списка аргументов». Могу я узнать почему? Поскольку в ES5 я могу использовать точку с запятой, например return this.name + 'is friends with' + el; Большое вам спасибо!

function Person(name) {
    this.name = name;
}

ES6
Person.prototype.myFriends5 = function(friends) {
var arr = friends.map((el) =>
     `${this.name} is friends with ${el}`
);
console.log(arr);
}
var friends = ['Bob', 'Jane', 'Mark'];
new Person('John').myFriends5(friends);

1 Ответ

0 голосов
/ 30 октября 2018

Функции стрелок можно записать двумя способами:

(params) => expression

или

(params) => {
    body
}

где body аналогично телу традиционной функции (последовательность операторов).

Когда вы используете первый формат, вы не можете иметь ;, потому что это недопустимо в выражении, оно используется для завершения операторов в теле функции. По той же причине, по которой вы не можете написать:

console.log(a;)

Первая форма сокращена для:

(params) => {
    return expression;
}

Правильное правило для того, что является допустимым выражением, заключается в том, что это то же самое, что может идти в скобках. Так что, если вы можете написать что-то вроде:

a = (something)

тогда можно написать:

(params) => something

Так как вы не можете написать:

a = (`${this.name} is friends with ${el}`;)

Вы не можете написать:

(params) => `${this.name} is friends with ${el}`;
...