> Вывод: ССЗБ, для заведомо больших чисел во всех языках пользуются либами вроде BigNumber. Опровергнуто. Python
In [13]: 9999999999999999999==10000000000000000000
Out[13]: False
> А если бы в итоге получили число 3, то нашелся бы другой чувак, который спросил: "ээ, а какого возвращается число, а не строка?"
нашелся бы, но было можно еще и так
In [14]: 1 + "2"
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-b88986c5ffd8> in <module>()
----> 1 1 + "2"
TypeError: unsupported operand type(s) for +: 'int' and 'str'
> Читаем доки
Да на каждый пчих читаем доки (man javascript)
code to char
> String.fromCodePoint(123)
'{'
как обратно (забыл)
> String.
...
String.fromCharCode String.fromCodePoint String.prototype String.raw
а, конечно fromCharCode из char в code!
> String.fromCharCode('{')
'\u0000'
уупс...
> '{'.charCodeAt(0)
123
> нестрогое равенство всегда используют на свой страх и риск
то есть, лучше бы не было вообще ==
> хотя определенное удобство в этом есть
когда пишешь первый в жизни hello world - безусловно.
> Хорошо еще про http://0.30000000000000004.com не вспомнил. Идем далее:
да еще не вспомнили про this, который как не пиши может оказаться не тем, что ты думал
реально же самые влиятельные фигуры в JS мире говорят, что это досадные баги, которые не исправляются только из легаси...
Но язык конечно движется в правильном направлении. Kак правильно сегодня пройти по всем ключам в объекте?
Object.keys(obj).forEach(key => {
var value = obj[key];
console.log(key, value);
});
просто и выразительно - не то, что у некоторых
for key, value in obj.items():
print(key, value)
и конечно нельзя использовать то что написано на людьми которые на это языке пишут
_.forEach(obj, (value, key) =>
console.log(key, value) )
Object.keys почему не Object.prototype.keys, а да из-за того, что поломан (for name in obj){}
Object.assign это extend, почему от тогда не называется так?