#javascript
#javascript
Вопрос:
пожалуйста, просветите меня, поскольку я новичок в javascript. У меня есть примеры 1 и 2 ниже, и мне интересно, почему пример 2 не может отобразить правильный ожидаемый результат при использовании ключевого слова «return». Я знаю, что знак плюс ( ) может решить рассматриваемую проблему, просто интересно, когда использовать запятую (,) для объединения в javascript, когда дело доходит до переменных.
sample-1
var person = {
firstName: "John",
lastName : "Smith",
fullName : function() {
console.log("my name is ",this.firstName " ",this.lastName);
}
}
person.fullName(); //my name is John Smith
sample-2
var person = {
firstName: "John",
lastName : "Smith",
fullName : function() {
return "my name is ",this.firstName " ",this.lastName;
}
}
person.fullName(); //"Smith"
Комментарии:
1. Оператор запятой вычисляет каждый из своих операндов (слева направо) и возвращает значение последнего операнда.
2. @kemotoe за исключением вызова функции, когда она разделяет разные аргументы…
Ответ №1:
С
console.log("my name is ",this.firstName " ",this.lastName);
вы передаете несколько аргументов console.log
функции. Это работает так же, как любой простой вызов функции. Количество аргументов для console.log
более или менее произвольно, функция будет знать, что с ними делать (вроде как Math.max
).
Это
return "my name is ",this.firstName " ",this.lastName;
не возвращает несколько значений (похоже, что оно вернется this.lastName
). Функция может возвращать одно значение или вообще не возвращать никакого значения. Вы хотите объединить вышеуказанное в одну строку, вы должны сделать это по-другому.
Например, с помощью.
Комментарии:
1. Это
return
не неверно , оно просто не будет делать то, что ожидает OP. Если бы это был недопустимый синтаксис, OP не заметил бы странное возвращаемое значение, потому что код не был бы запущен.2.
it is simply incorrect syntax
это правильный синтаксис. Но компьютер делает то, что вы ему сказали, а не то, что вы хотите, чтобы он делал.
Ответ №2:
Запятые внутри круглых скобок, обозначающие вызов функции, разделяют выражения аргументов. Снаружи, как и в вашем return
заявлении, они являются «оператором запятой».
Таким образом, магия, которая это console.log()
делает, основана только на коде в этой функции, которая явно просматривает все аргументы, которые вы ей передаете.
В return
основном эквивалентно
"my name is ";
this.firstName " ";
return this.lastName;
Запятые в вашем примере разделяют общее выражение на три части, и каждая часть оценивается отдельно. Общее значение a, b, c
— это значение c
alone .