Применяется ли запятая только к консоли.войдите в javascript для объединения переменных со строками?

#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 .