[28/28] Дом, который построил Кекс


#1

https://htmlacademy.ru/courses/217/run/28

Код
var materialPrice = {
  'wood': 1000,
  'stone': 1500,
  'brick': 2000
};

var house = {
  rooms: 10,
  floors: 5,
  material: 'wood',
  coefficient: 10.5,
  calculateSquare: function() {
    square = this.rooms * this.coefficient * this.floors;
    return square;
  },
  calculatePrice: function(material) {
    price = square * materialPrice[this.material];
    return price;
  }
};

Вопрос: почему переменные square и price не потребовалось объявлять?

Еще вопросы по курсу:

  1. https://htmlacademy.ru/courses/217/run/11
    Название массива winners внутри функции совпадает с названием переменной снаружи.
  2. https://htmlacademy.ru/courses/217/run/12
    В тексте первой цели сказано: «В теле функции getWinners, после объявления переменной winners…» Но внутри функции объявлен массив с таким именем. Переменная по коду ниже.
  3. https://htmlacademy.ru/courses/217/run/21
    Имя объекта внутри функции снова совпадает с именем переменной снаружи. Если это намеренно сделано, то с какой целью?

#2

Здравствуйте.

В 12 задании цель сформулирована специально максимально подробно. Речь идёт именно о переменной внутри функции.

В целом, названия переменных могут совпадать с названиями параметров функций, например. На больших проектах такой стиль не используют, потому что он неочевидный и может вызвать путаницу. Но в рамках курса в этом нет ничего страшного, спорных ситуаций тут не возникает. Всё под контролем. В дальнейших курсах мы подробнее опишем механизм работы с подобными переменными.


#3
Code

var materialPrice = {
‘wood’: 1000,
‘stone’: 1500,
‘brick’: 2000
};

var house = {
rooms: 10,
floors: 5,
material: ‘wood’,
coefficient: 10.5,

calculateSquare: function () {
return this.rooms * this.coefficient * this.floors;
},

calculatePrice: function() {
return this.calculateSquare() * materialPrice[this.material];
}
};


#4

Ушло пару минут)

code

var area;
var price;

var materialPrice = {
‘wood’: 1000,
‘stone’: 1500,
‘brick’: 2000
};

var house = {
rooms: 10,
floors: 5,
material: ‘wood’,
coefficient: 10.5,

calculateSquare: function () {
area = this.rooms * this.coefficient * this.floors;
return area;
},

calculatePrice: function () {
price = area * materialPrice[this.material];
return price;
}
};


#5

а когда будут новые курсы по js?) в этом месяце будет?

и просьба оглавление делать не такое “веселое”, если что-то нужно повторить, то с ума сойдешь пока найдешь необходимое!


#6

Скоро выйдет новый курс, следите за анонсами)
про названия я вас услышала)


#7

так и не понял почему переменные price и square не пришлось объявлять


#8

Здесь подробно описано почему, вкладка Внешние переменные :smirk:
https://learn.javascript.ru/function-basics


#9

Ваш код не правильный.