Насколько я понимаю:
==
- это просто общее сравнение, поэтому, если ваш ключ является целым числом, он преобразует строку в целое число для сравнения и из руководства :
Значение дается начальным
часть строки. Если строка
начинается с действительных числовых данных, это
будет используемое значение. В противном случае
значение будет 0 (ноль). Действительный числовой
данные - необязательный знак, сопровождаемый
одна или несколько цифр (опционально
с десятичной точкой), а затем
по дополнительному показателю. Экспонента
это «е» или «е», за которым следует один или
больше цифр.
===
является строгой оценкой, поэтому она также сравнивает типы.
Поэтому, когда вы делаете «0 == '_identifier'
», оно проходит, поскольку оно оценивает '_identifier'
как 0.
Когда вы делаете «0 === '_identifier'
», оно не проходит, так как они разных типов.