`undefined `: est une valeur de type `Undefined` (variable déclarée mais non assignée) <br>
`null `: est une valeur de type `Object `(ce qui est d'ailleurs un [bug de javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null)) (valeur déclarée et assignée à null )
`undefined `: une variable qui n'a pas de valeur a la valeur `undefined` qui est elle même de type `undefined `
```
var TestVar;
alert(TestVar); //shows undefined
alert(typeof TestVar); //shows undefined
var value;
alert(value == undefined) //true (value à la valeur undefined)
alert(typeof(value) == "undefined") //true (value est de type undefined)
alert(value === undefined) //true (value à la valeur undefined et elle est de type undefined)
```
`null `: est une valeur de type `Object `(ce qui est d'ailleurs un [bug de javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null)) (valeur déclarée et assignée à null )
Contrairement à `undefined`, `null` ne peut jamais être une valeur par défaut. il est toujours explicitement assigné comme toute autre valeur de type number, string ou autre.
```
var TestVar = null;
alert(TestVar); //shows null
alert(typeof TestVar); //shows object
alert(TestVar == null) //true car "js is dirty"
```
Les deux signifient que la variable n'a pas de valeur assignée. La différence c'est que `undefined ` est un `type `utilisé par le compilateur JS pour dire que la variable n'a jamais été assignée et `null ` est plus une `valeur `donné par le développeur pour signifier que la variable n'a pas encore de valeur.
Une variable n'aura jamais de valeur null si elle n'a pas été assignée explicitement par le développeur.
[Pour plus d'informations](http://stackoverflow.com/questions/2235622/can-i-set-variables-to-undefined-or-pass-undefined-as-an-argument)
[Réponses sur stack](http://stackoverflow.com/questions/2235622/can-i-set-variables-to-undefined-or-pass-undefined-as-an-argument)
[Utiliser les différents tests d'égalité](https://developer.mozilla.org/fr/docs/Web/JavaScript/Les_diff%C3%A9rents_tests_d_%C3%A9galit%C3%A9)
### Tester qu'une variable n'est ni `undefined`,ni `null ` :golfer:
La manière la plus sûre de faire ce test est :
...
...
@@ -112,8 +120,10 @@ if (typeof(value) !== "undefined" && value){
}
```
>> Attention
1.Attention les tests d'égalité ou d’inégalité doivent être strictes (=== et !==) => comparaison de valeur et de type
1. les tests d'égalité ou d’inégalité doivent être strictes (=== et !==) => comparaison de valeur et de type
2. typeof(value) !== "undefined" est mieux que value !==undefined dans le cas où undefined est utilisé dans le programme comme variable
3. undefined == null //retourne true car javascript fait une conversion implicite de types.
4. undefined === null //retourne false car null et undefined ne sont pas du même type.