переменная var возвращает неопределенное значение? - PullRequest
7 голосов
/ 07 октября 2010

Когда я запускаю "var variable = true;"в консоли Chrome я получаю "undefined":

> var variable = true;
undefined

Но когда я запускаю без "var", возвращается true:

> variable = true;
true

Почему возвращается "undefined" с "var"?

Это сбивает с толку, потому что я ожидал, что это вернет истину.

Ответы [ 5 ]

6 голосов
/ 07 октября 2010

Первое - это выражение, а второе - выражение. Хотя это не совсем то же самое, это похоже на правила C:

// A statement that has no value.
int x = 5;

// An expression...
x = 10;

// ...that can be passed around.
printf("%d\n", x = 15);
3 голосов
/ 07 октября 2010

var x = y; - это оператор , который не возвращает значения.В консоли WebKit JS оператор, который не возвращает значения, будет показывать undefined в качестве результата, например,

> if(1){}
undefined
> ;
undefined
> if(1){4}  // this statement returns values!
4

Назначение - это выражение , которое возвращает значение LHS.Это означает, что этот оператор выражения имеет возвращаемое значение, и это будет показано.

1 голос
/ 07 октября 2010

Назначение возвращает значение назначения, но с var это возвращение «потребляется» (?)

0 голосов
/ 22 ноября 2018

Я хотел бы отметить, что ответ, предоставленный kennytm , должен быть принятым ответом, по крайней мере, в педагогических целях.Принятый ответ не дает ответа на вопрос, почему это так, и не дает более глубокого понимания.

Как и значение null в JavaScript, undefined указывает на отсутствие значения, но гораздо глубже.Следующее должно быть принято как дополнение к вышеупомянутым ответам:

undefined - это значение переменных, которые не были инициализированы, и значение, которое вы получаете при запросе значения объектасвойство или элемент массива, который не существует.Это значение также возвращается функциями, которые не имеют возвращаемого значения, и значением параметров функции, для которых не указан аргумент.undefined - это предопределенная глобальная переменная (а не ключевое слово языка, например, null), которая инициализируется неопределенным значением.

Вы можете рассмотреть undefined для представления отсутствия на уровне системы, неожиданного или ошибочного типазначения и null для представления уровня программы, нормального или ожидаемого отсутствия значения.

- Фланаган, Дэвид.JavaScript: Полное руководство: активируйте свои веб-страницы (Полное руководство).О'Рейли Медиа.Kindle Edition.

Кроме того, убедитесь, что ознакомились с принятым и вторым наиболее востребованным ответом для дальнейшего ознакомления: Chrome / Firefox console.log всегда добавляет строку, в которой указано undefined

0 голосов
/ 16 августа 2018

Операторы всегда возвращают undefined.

var color = "red"; 
undefined

Выражения всегда возвращают значение.

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