Сведения о вопросе

Martincow

11:56, 16th August, 2020

Теги

JavaScript    

Непонятное поведение Javascript в простых ситуациях. Растолкуйте

Просмотров: 281   Ответов: 2

Мне конечно после C++ сложно бывает находить подобные ошибки в коде. Но все таки: чем объясняется подобное поведение JS?

Пример первый. В обоих случаях ожидалось true:
var flag = true;
flag &= true;
alert(flag);//говорит "1"

var flag = true;
flag = flag && true;
alert(flag);//говорит "true"


Примет второй. Сравнение на «равенство» двух объектов-дат всегда возвращает false. При этом <= и < возвращают разные значения. Непонятно.
alert(new Date == new Date);//говорит "false"
alert(new Date <= new Date);//говорит "true"
alert(new Date >= new Date);//говорит "true"
alert(new Date < new Date);//говорит "false"
alert(new Date > new Date);//говорит "false"



  Сведения об ответе

ASSembler

21:54, 14th August, 2020

Быть может потому что
flag &= true;
это
flag = flag & true;
а вовсе не
flag = flag && true;
(количество амперсандов посчитайте).

По поводу дат. Вот такой код работает:
var a = new Date;
var b = a;
alert(a == b); // true


  Сведения об ответе

lourence

00:00, 11th August, 2020

>flag &= true;

здесь преобразование типов Boolean -> Number

>alert(new Date == new Date);//говорит «false»

каждый элемент — новый обьект, надо смотреть в какой последовательности они создаются.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться