null 2014/09/12
null みたいな類の各プログラミング言語での取り扱いの比較。
C言語 2015/01/08
NULL というのがある。0と同じで、ポインタに0を代入するのと NULL を代入するのはたぶん同じで、ポインタがなにも指していないことを意味するのに使われる。
Java 2014/09/12
null というのがあり、任意の参照型になりえる。参照型なので、intなどのプリミティブ型にnullを使うことはできない。
一度も代入されていないローカル変数を参照しようとすると、
variable x might not have been initialized というようなコンパイルエラーになり、デフォルトでnullになることはない。
一方、一度も代入されていないクラスのフィールドや配列の要素を参照しようとすると、参照型は null になり、
intなどの数値のプリミティブ型は 0、boolean は false になり、コンパイルエラーにはならない。
Scala 2016/06/23
Javaとの互換性のためにJavaと同じnullがあるが、ScalaではnullはJavaのライブラリを使用するときに現れてしまうのみで、通常の利用は推奨されない。
nullを使いたくなる場面ではScalaではOption型の Some, None を使う。
一度も代入されていないローカル変数というのはScalaでは文法上ありえない。
val や var での変数宣言と同時に代入が必要。
変数宣言時に _ で代入すると、Int などでは 0、Boolean は false になり、それ以外は null になる。
Nil というものもあるが、これは要素が1つもない空のList型のオブジェクトであり、ぜんぜん違う。
PHP 2016/03/30
NULL というのがある。TRUE / FALSEと同じく大文字小文字が区別されない。
一度も代入されていない変数や、unset関数が呼び出された変数を参照しようとすると、未定義の変数として PHP Notice: Undefined variable が発生し、NULL という値が返される。
変数が定義済みかどうかをチェックするには isset で調べれば良い。
isset は引数に与えた変数が定義済みかどうかを TRUE か FALSE で返す。
NULL を明示的に代入した変数に対しても FALSE が返される。
isset は通常の関数ではなく、言語構造である。
if (isset($a)) {
# 定義済みの場合
} else {
# 未定義の場合
}
isset は変数だけでなく連想配列の要素が存在するかどうかにも使われる。
-> 連想配列に特定のキーが含まれているかどうかを判定するには
NULL はいろいろな値を一致してしまうので注意。
var_export(NULL == NULL); // => true
var_export('' == NULL); // => true
var_export(0 == NULL); // => true
var_export(array() == NULL); // => true
var_export(FALSE == NULL); // => true
var_export(NULL === NULL); // => true
var_export('' === NULL); // => false
var_export(0 === NULL); // => false
var_export(array() === NULL); // => false
var_export(FALSE === NULL); // => false
NULL | PHP Manual
http://php.net/manual/ja/language.types.null.php
isset | PHP Manual
http://php.net/manual/ja/function.isset.php
Python 2013/10/14
None というのがある。関数にreturn文がないときに、Noneが返されるものとみなされる。
Ruby 2014/07/18
nil というのがある。Rubyでは nil もオブジェクトであるので、メソッドを呼ぶ出すことができる。
nil は NilClass というクラスの唯一のインスタンスである。Scalaの Nil とはぜんぜん意味が違う。
print nil.nil?
# => true
Perl 2015/01/24
undef という値がある。
変数を宣言だけして一度も代入しないと undef になる。または、宣言もなにもせずにいきなり初めての変数を参照しようとしても undef になる。
定義済みの変数を未定義の状態に戻すには、以下のようにする。
$a = undef;
または以下のようにもできる。
undef $a;
defined を使うと、定義済みかどうかを判定することができる。
if (defined $a) {
# 定義済みの場合
} else {
# 未定義の場合
}
undef と '' を eq で比較すると Use of uninitialized value という警告が出るが、等値との判定はされる。
JavaScript 2015/04/25
null や undefined というのがある。
null かどうかを判定するには
a === null
undefined かどうかを判定するには
typeof a === 'undefined'
外部リンク
nullとundefinedの違い | Qiita
http://qiita.com/shuhei/items/199281e07925d24059d5undefined値のさまざまな判定方法 | 泥のように
http://blog.tojiru.net/article/205007468.html