Ineska
16.Февраль.2018 14:22:55
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 не потребовалось объявлять?
Еще вопросы по курсу:
https://htmlacademy.ru/courses/217/run/11
Название массива winners внутри функции совпадает с названием переменной снаружи.
https://htmlacademy.ru/courses/217/run/12
В тексте первой цели сказано: «В теле функции getWinners, после объявления переменной winners…» Но внутри функции объявлен массив с таким именем. Переменная по коду ниже.
https://htmlacademy.ru/courses/217/run/21
Имя объекта внутри функции снова совпадает с именем переменной снаружи. Если это намеренно сделано, то с какой целью?
1 лайк
Здравствуйте.
В 12 задании цель сформулирована специально максимально подробно. Речь идёт именно о переменной внутри функции.
В целом, названия переменных могут совпадать с названиями параметров функций, например. На больших проектах такой стиль не используют, потому что он неочевидный и может вызвать путаницу. Но в рамках курса в этом нет ничего страшного, спорных ситуаций тут не возникает. Всё под контролем. В дальнейших курсах мы подробнее опишем механизм работы с подобными переменными.
2 лайка
а когда будут новые курсы по js?) в этом месяце будет?
и просьба оглавление делать не такое “веселое”, если что-то нужно повторить, то с ума сойдешь пока найдешь необходимое!
4 лайка
Скоро выйдет новый курс, следите за анонсами)
про названия я вас услышала)
так и не понял почему переменные price и square не пришлось объявлять
2 лайка
Здесь подробно описано почему, вкладка Внешние переменные
https://learn.javascript.ru/function-basics
1 лайк
Gemini
06.Сентябрь.2018 15:28:56
10
Тоже не понял, почему переменные не объявлены, и решил обойтись)
А зачем нужно было вводить в calculatePrice параметр материала?..
минимал
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.floors * this.coefficient;
},
calculatePrice: function () {
return this.calculateSquare() * materialPrice[this.material];
}
};
console.log(house.calculateSquare());
console.log(house.calculatePrice());
1 лайк
Так же не понял про объявление переменных. Я понял, что есть внешние и локальные, но я не вижу в коде, где у Ineska объявлены они снаружи вот в чем дело … + так же не ясно про параметр материала…
P.s. Решил тоже без доп.переменных обойтись
Дом, который построил Кекс
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 house.calculateSquare() * materialPrice[this.material];
}
};
Видимо справедлива пословица «обещанного три года ждут»)
Прохожу JS-1 и ничего не поменялось в плане нейминга заданий)
Почему не требуется использовать функцию которая будет получать значения этажей и так далее?
let materialPrice = {
‘wood’: 1000,
‘stone’: 1500,
‘brick’: 2000
};
let house = {
rooms: 10,
floors: 5,
material: ‘wood’,
coefficient: 10.5,
calculateSquare: () => {
return (house .rooms * house .coefficient) * house .floors;
},
calculatePrice: () => {
return house .calculateSquare() * materialPrice[house .material];
},
};
1 лайк
Zetter
17.Октябрь.2023 13:30:25
15
Микро-рефакторинг: все house
можно заменить на this
, лишние скобки тут return (house.rooms * house.coefficient)
1 лайк