!{} == false
- вот с этим понятно. Он видит оператор отрицания и следующий за ним объект. Оператор отрицания переводит выражение в "логическую форму" (не знаю как по другому сказать) и т.к. в логической форме {} === true, то !{}===false.
{} ! {} == false
вот с этим уже не совсем понятно, т.к. оператор "!" стоит в середине выражения. По идее, хотя я, скорее всего ошибаюсь, в этом случае должно вернуться
undefined
.
}!{ - ну в от с этим ваще не понятно. Тоже ждал синтаксической ошибки.