Испытание: От зарплаты до зарплаты


#1

Делается полностью по аналогии с обучающими курсами:

Code

var calculateSalary = function (blackSalary) {
var percent = 0.35
if (blackSalary >= 100000) {
percent = 0.45;
}
var tax = percent * blackSalary;
var whiteSalary = blackSalary - tax;
return whiteSalary;
};


#3
вот так тоже прошло

var calculateSalary = function (Zp) {
var lapaZp = Zp - Zp0.35;
if (Zp >= 100000) { lapaZp = Zp - Zp
0.45 };
return lapaZp;
};


#4

Мне интересно, почему у меня программа прошла проверку без объявления переменной в теле функции:

Summary

var calculateSalary = function (blackZp) {
whiteZp=blackZp - blackZp0.35;
if (blackZp>=100000) {
whiteZp=blackZp - blackZp
0.45;
}
return whiteZp;
};

Вот скрин:

Summary


#5

@juwain, это :point_up: к вам.
+ Медиана на чётном количестве элементов


#6

Отправил разработчикам, разберёмся, спасибо.


#7

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


#8

Это в любом случае будет Reference Error, потому что на стадии компиляции движок не видит никакой переменной whiteZp ни к глобальной области видимости, ни в лексической.


#9

да, так и будет, если вы работаете в режиме ‘use strict’


#10

var calculateSalary = function (dirtySalary) {
if (dirtySalary>=100000) {
tax=0.45;
} else {
tax=0.35;
}
clearSalary=dirtySalary*(1-tax);
return clearSalary;
};


#11

когда углубился в js и решил максимально сократить код, хотя читаемость лучше когда полная запись, а не сокращенная

const calculateSalary = money => money >= 100000 ? money * 0.55 : money * 0.65

#12
Summary
var calculateSalary = function (dirtySalary) {
  return dirtySalary <= 100000 ? dirtySalary * (1 - 35 / 100) : dirtySalary * (1 - 45 / 100);
};