2017-01-30 3 views
-2

Я пытаюсь передать переменную в объект таким образом, что значение свойства является переменной, я прошел в.Передача переменных в объект в Javascript

var car = { 
    make: 'Jeep', 
    model: 'Renegade', 
    year: yearVar 
} 

var yearVar = 2016; 
console.log(car.year); //says year is undefined 

Так как я устанавливаю свойство автомобиля объекта равна переменной yearVar?

+1

Там нет ошибки. Вы пытались поменять позиции «var car = ...» и «var yearVar = ...'? – Xufox

+0

Я покинул console.log внизу и переместил объявление переменной над объектом и исправил ее. Благодаря! –

+0

Так много ответов для простой проблемы установки значения переменной после ее использования. Я чувствую, что меня так не замечают! – rasmeister

ответ

2

undefined не является ошибкой. Он говорит undefined, потому что на линии вы назначаете значение yearVar объекту, переменная yearVar еще не определена, поэтому вместо этого она назначит undefined. (определение переменной впоследствии не решит проблему, потому что undefined уже назначен). Что вам нужно сделать, это:

// define yearVar first 
var yearVar = 2016; 

var car = { 
    make: 'Jeep', 
    model: 'Renegade', 
    year: yearVar // then use it afterwards (after it's been defined) 
} 
+0

Так оно и было, мой заказ был испорчен. Спасибо за помощь –

1

Объявите переменную yearVar и назначьте ее значение перед созданием объекта car.

var yearVar = 2016; 
 
var car = { 
 
    make: 'Jeep', 
 
    model: 'Renegade', 
 
    year: yearVar 
 
} 
 
console.log(car.year)

0

Чтобы изменить после того, как car было создано:

var car = { 
    make: 'Jeep', 
    model: 'Renegade', 
    year:null 
} 

car.year = 2016; 

console.log(car.year); 
0

Я не понимаю, почему вы не видите ошибки раньше, чем console.log вызова. При запуске кода вы должны получить сообщение об ошибке при создании объекта car с использованием нотации литерала объекта. Причина, по которой вы видите ошибку, связана с тем, что при построении car она пытается получить значение yearVar, которое еще не существует.

Чтобы исправить ошибку просто переместить yearVar декларацию над созданием объекта автомобиля следующим образом:

var yearVar=2010 
var car = {make:'Jeep',model:'Renegade',year:yearVar} 
+2

Хотя это исправляет код, объяснение не совсем корректно: абсолютно никакой ошибки, вызванной исходным кодом. Объявляются объявления 'var', что означает, что они будут объявлены в верхней части области, независимо от того, где они находятся в пределах этой области. В исходном коде 'car.year' был просто' undefined'. – Xufox

1

Вам нужно будет объявить и установить yearVar varible перед определением объекта автомобиля. Javascript выполняет сверху вниз. Выполнение чего-то вроде этого, несомненно, будет работать.

var yearVar = 2016; 

var car = { 
    make: 'Jeep', 
    model: 'Renegade', 
    year: yearVar 
} 

console.log(car.year); 
0

Хотя проблема решена, я делюсь чем-то новым, но это правильно. Это метод, используемый движком JavaScript под названием hoisting.

yearVar = 2016; //check the var declaration in the bottom 
 
var car = { 
 
    make: 'Jeep', 
 
    model: 'Renegade', 
 
    year: yearVar 
 
} 
 

 
var yearVar; 
 
console.log(car.year);

Смежные вопросы