Что на самом деле является нулевым?

1

Я не знаю, задаю ли я правильный вопрос или нет, но мне любопытно, почему 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?

  • 0
    Чтобы сравнить null в Javascript, используйте === , null === 0
  • 0
Показать ещё 11 комментариев
Теги:
types
null

1 ответ

2

Вы можете посмотреть таблицы сравнения типов на каждом языке, чтобы понять. Вот таблицы для трех языков, которые вы указали:

И тогда вы должны проверить, как 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. Причины этих различий, вероятно, сложнее.

  • 1
    Ну, приятель, я хотел знать, что мы на самом деле считаем NULL?
  • 0
    @ n01ze, тогда вам, вероятно, придется объяснить, что "что мы на самом деле считаем NULL?" на самом деле означает
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню