@Xkanox

Как работает этот код?

В книге встретил пример, создаётся объект taxi, но в функцию отправляется параметр car и в этой функции свойства объекта проверяется через то же car.свойство. Искал информацию в интернете, но не смог найти объяснений. Как оно работает?
Пример здесь - https://jsfiddle.net/zj4yp9cf/
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
Функция function prequal (car) является функцией общего назначения, то есть, указывая параметр car, и работая с ним внутри, отсутствует привязка к конкретной переменной, то есть использование функции становится возможным для многих объектов, будь то taxi или что-либо другое.
Допустим, сначала вы вызываете функцию для taxi через код prequal(taxi), затем у вас появляется множество моделей транспорта и т.д., но вы можете все равно использовать данную функцию, то есть через prequal(motorcycle) произойдет уже ее вызов для объекта motocycle, а не taxi, потому что в параметр car передается motocycle.
function prequal(car) {
 	if (car.mileage > 10000) {
  	return false
 } else if (car.year > 1960) {
 		return false
 }return true
}

let taxi = {
	make: "Webville Motors",
  model: "Taxi",
  year: 1955,
  color: "yellow",
  mileage: 281341
}
let motocycle = {
	make: "Moto",
  model: "Moto2",
  year: 1995,
  color: "red",
  mileage: 281341
}
prequal(taxi);
prequal(motocycle);

Так правильнее всего создавать функции, без привязки к DOM элементам или переменным, чтобы их можно было использовать повторно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
https://developer.mozilla.org/ru/docs/Web/JavaScri...
например:
const two = 2;
function square(n) {
  return n*n;
}
const result = square(two);
console.log(result);

Почему тут функция смотрит на n, но видит two?
Ответ написан
Комментировать
@andrei1m
function prequal ([*CСЫЛКА(адрес в памяти) на объект, переданная при вызове этой функции *]) {
if ([*CСЫЛКА(адрес в памяти) на объект переданная при вызове этой функции *].mileage > 10000) {
return false
} else if ([*CСЫЛКА(адрес в памяти) на объект, переданная при вызове этой функции *].year > 1960) {
return false
}
return true
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы