Я не знаю, задаю ли я правильный вопрос или нет, но мне любопытно, почему PHP, JavaScript, Python интерпретируют null
разному
Javascript:
console.log(null === 0); // Outputs false
console.log(null + 1); //Outputs 1 , why ? if null isn't equal to zero
PHP
var_dump(null === 0);
// outputs boolean false
var_dump(null + 1);
// outputs int 1, why if null being not equals to zero ?
Python:
>>None == 0
>>false
Поскольку python None - это одноэлементный объект, поэтому добавление к нему дает ошибку
TypeError: неподдерживаемый тип (-ы) операндов для +: 'NoneType' и 'int'
Интересно, как другой язык интерпретирует NULL
? И что это должно быть? И если Null
не равен Zero
, зачем делать добавление на нем, он ведет себя как Zero
?
Вы можете посмотреть таблицы сравнения типов на каждом языке, чтобы понять. Вот таблицы для трех языков, которые вы указали:
И тогда вы должны проверить, как null
(или None
) выдаются другим типам.
Для PHP:
(int)null
равно 0
(string)null
is ''
(пустая строка)Для JS:
null + 0
равно 0
, null + 1
равно 1
, но parseInt(null)
- NaN
null + ''
- 'null'
а String(null)
- 'null'
Не могу проверить его для Python прямо сейчас. Но вы видите, почему он ведет себя так, как в PHP и JS. Причины этих различий, вероятно, сложнее.
null
в Javascript, используйте===
,null === 0