23.12.2015 / 14:19 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Цитата REM!: Не путаешь ли ты JS с PHP? Сравнение в JS ведёт себя вполне нормально. С округлением есть проблемы, с typeof есть проблемы, это да.function sayHi(x) {
if (!x)
return console.log('Bye');
console.log('Hi');
}
//What will this print?
sayHi(false);
sayHi(null);
sayHi([]);
sayHi(new Boolean(false));
var a = {
valueOf: function () {
return "2";
}
};
console.log(1 == '1'); // #=> true
console.log(1 == true); // #=> true
console.log(0 == ''); // #=> true
console.log(null == null); // #=> true
console.log(null == undefined); // #=> true
console.log(null == ''); // #=> false
console.log(null == 0); // #=> false
console.log(NaN == NaN); // #=> false
console.log(a == 2); // #=> true
console.log(a == true); // #=> false
console.log(a == false); // #=> false
__________________
Эль Презеденте Изменено Oak (23.12 / 14:27) (всего 2 раза) |
23.12.2015 / 14:21 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Цитата NaruTrey: Не думаю, что это понятие здесь применимо.Нет, серьезно. Никогда не слышал про написание фронтенда к LLVM? Грубо говоря, это написание лексера, парсера и транслятора в IR LLVM, чтобы тот его после скомпилировал в машинный код.
Конечно, к этой теме это никакого отношения не имеет, фронтенд в веб-разработке это дело совсем другое.
__________________
Эль Презеденте Изменено Oak (23.12 / 14:22) (всего 1 раз) |
23.12.2015 / 14:51 | |
NaruTrey Пользователь Сейчас: Offline
Имя: Андрей K. Откуда: Тольятти Регистрация: 15.01.2010
| Oak, в этой теме всё намешано, Ксакеп виноват.
__________________
Чёрные усы кричает этот свисть |
23.12.2015 / 14:51 | |
REM! Модератор загрузок Сейчас: Offline
Имя: Remi Регистрация: 27.09.2010
| Oak, ты путаешь операторы сравнения. В JavaScript их два: первый (==) называется equality, а второй (===) — identity. Первый пытается привести типы к общему, второй — нет. Отсюда такие нелогичные результаты. Если интересно, можешь поискать таблицу для оператора равенства (нестрогого), там всё наглядно. Отладим Всухую тобою написанное: В данном случае строка приводится к числу (что равнозначно унарному плюсу), затем идет сравнение через ===. Имеем: console.log(1 === +'1'); // #=> true
Уже логичнее, не правда ли? Не будь так строг к JS Изменено REM! (23.12 / 14:57) (всего 4 раза) |
23.12.2015 / 15:00 | |
RblSb Пользователь Сейчас: Offline
Регистрация: 25.07.2011
| Ксакепу захотелось пересказать статью с хабра, поэтому он создал отдельную ненужную тему. Голосую за ее удаление.
|
23.12.2015 / 15:07 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| REM!, это мне напоминает аргументы программистов на Go, которые в ответ на жалобы об отсутствии дженериков говорят "А нам и без них хорошо".
__________________
Эль Презеденте |
23.12.2015 / 15:10 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| REM!, на твой пост ( #441184) отвечу, что второй пост был взят из twitter-аккаунта @cssunderhood. На данный момент его ведёт Андрей Ситник (автор PostCSS), так что выглядит как-то странно: они отказались, но и не отказались одновременно. |
23.12.2015 / 15:13 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Ксакеп, а где ссылка на сам твит?
__________________
Эль Презеденте |
23.12.2015 / 15:22 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| Oak, Плохой пример. Чего без этого? есть же == и === Все есть, что тебе еще надо.
|
23.12.2015 / 15:30 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Dinisimys, ладно, да, согласен, хотя присутствие и ==, и === в языке одновременно очень смущает.
__________________
Эль Презеденте |