Потому что оператор равенства ==
принудительно преобразует тип данных, чтобы проверить, равен ли он другому операнду, в то время как ===
(оператор тождества) не требует никакого преобразования, и поэтому выполняется меньше работы, что делает его быстрее.
===
не выполняет приведение типов, поэтому 0 == '0'
оценивается как истина
, но 0 === '0'
- до false
.
Во-первых, === проверяет, являются ли два аргумента одного типа - поэтому число 1 и строка '1' не проходят проверку типа до того, как будут выполнены какие-либо сравнения. С другой стороны, == сначала не проверяет тип, а преобразует оба аргумента к одному типу, а затем выполняет сравнение.
Поэтому === быстрее проверяет условие отказа
Знак == вызывает большие накладные расходы на преобразование типов перед сравнением. === сначала проверяет тип, затем продолжает работу без преобразования типа.
Поскольку ===
не требует принуждения операндов к одному и тому же типу перед их сравнением.
Я сомневаюсь, что разница в скорости очень большая. В нормальных условиях вы должны использовать тот оператор, который имеет больше смысла.
Я не знаю, значительно ли это быстрее, но === в большинстве языков является прямым сравнением типов, в то время как == будет пытаться выполнить коэрцицию типов, если это необходимо/возможно, чтобы получить совпадение.
В заключение === работает быстрее, потому что не преобразует тип данных, чтобы увидеть, имеют ли две переменные одинаковое значение, но когда вам нужно увидеть, имеют ли две переменные одинаковое значение, вы будете использовать ==, если не определите, какой тип является переменными , или === если важен еще и тип переменных.