Рассмотрим TypeScript с точки зрения теории множеств, разберем контроль выполнения и дженерики.
Жүктеу.....
Пікірлер: 7
@localhost6666 күн бұрын
{} - [] будет NaN, а не -0
@mukhindev
5 күн бұрын
Зависит от контекста в котором это выражение находится. {} - [] вернёт -0, ({} - []) вернёт NaN
@localhost666
5 күн бұрын
@@mukhindev а в чем собственно разница данных выражений?
@localhost666
5 күн бұрын
Признаю, действительно -0. Вопрос какого х*я?? Массив будет приведен к 0. Объект же е строке обжект обжект, которая далее станет NaN, итог NaN. Где ошибка в рассуждении?..
@mukhindev
5 күн бұрын
@@localhost666 без скобок {} определяется как блок (block statement), а со скобками как объект. Это особенности синтаксического разбора. К примеру, если это выражение присваивать через = переменной, парсеру однозначно понятно что {} не блок и будет тоже NaN.
@mukhindev
5 күн бұрын
По приведению массива к 0. Сначала возвращается пустая строка "", затем приведение пустой строки к числу (из-за +) даст 0. См. про методы valueOf и toString. Можно вот так "хакнуть" const array = [] array.valueOf = () => { return 42 } console.log(array + 5) // 47
Пікірлер: 7
{} - [] будет NaN, а не -0
@mukhindev
5 күн бұрын
Зависит от контекста в котором это выражение находится. {} - [] вернёт -0, ({} - []) вернёт NaN
@localhost666
5 күн бұрын
@@mukhindev а в чем собственно разница данных выражений?
@localhost666
5 күн бұрын
Признаю, действительно -0. Вопрос какого х*я?? Массив будет приведен к 0. Объект же е строке обжект обжект, которая далее станет NaN, итог NaN. Где ошибка в рассуждении?..
@mukhindev
5 күн бұрын
@@localhost666 без скобок {} определяется как блок (block statement), а со скобками как объект. Это особенности синтаксического разбора. К примеру, если это выражение присваивать через = переменной, парсеру однозначно понятно что {} не блок и будет тоже NaN.
@mukhindev
5 күн бұрын
По приведению массива к 0. Сначала возвращается пустая строка "", затем приведение пустой строки к числу (из-за +) даст 0. См. про методы valueOf и toString. Можно вот так "хакнуть" const array = [] array.valueOf = () => { return 42 } console.log(array + 5) // 47