> PythonХорошо, признаю, в питоне действительно с этим все ок. Можно засчитать за по-настоящему конструктивный аргумент.
> но было можно еще и так
> TypeError: unsupported operand type(s) for +: 'int' and 'str'
Можно, но тогда и `У вас ${unread} сообщений` должен был бы отвалиться. (Не забываем о том, что template string - это всего лишь сахарок.)
> конечно fromCharCode из char в code!
Читаем доки: The static String.fromCharCode() method returns a string created by using the specified sequence of Unicode values. То есть ты перепутал вход и выход, такое бывает у тех, кто пренебрежительно пишет:
> Да на каждый пчих читаем доки (man javascript)
Идем далее:
> то есть, лучше бы не было вообще ==
Нет, лучше бы оно было, в некоторых случаях лучше только им и пользоваться (при сравнении с null например).
> еще не вспомнили про this, который как не пиши может оказаться не тем, что ты думал
А в чем проблема? Уже добавили синтаксический сахар для преодоления этого:
было: var bound = function () { return this.name }.bind(this);
стало: const bound = () => this.name;
> реально же самые влиятельные фигуры в JS мире говорят, что это досадные баги, которые не исправляются только из легаси
А ведь скромненько так начинал, со "своих знакомых друзей". Но их авторитет оказался недостаточным, поэтому пришлось срочно выдумывать каких-то "влиятельных фигур".
> Kак правильно сегодня пройти по всем ключам в объекте?
for (let key of Object.keys(object)) {
console.log(key);
}
> Object.keys почему не Object.prototype.keys
А Object.prototype и так засран (hasOwnProperty например), так что не надо туда еще что-то новое пихать.
> Object.assign это extend, почему от тогда не называется так?
Директория vs папка, приложение vs программа, etc.