Pour les variables locales, la vérification avec localVar === undefined
fonctionnera car elles doivent avoir été définies quelque part dans la portée locale ou elles ne seront pas considérées comme locales.
Pour les variables qui ne sont pas locales et qui ne sont définies nulle part, la vérification lèvera unesomeVar === undefined
exception: Uncaught ReferenceError: j n'est pas défini
Voici un code qui clarifiera ce que je dis ci-dessus. Veuillez prêter attention aux commentaires intégrés pour plus de clarté .
function f (x) {
if (x === undefined) console.log('x is undefined [x === undefined].');
else console.log('x is not undefined [x === undefined.]');
if (typeof(x) === 'undefined') console.log('x is undefined [typeof(x) === \'undefined\'].');
else console.log('x is not undefined [typeof(x) === \'undefined\'].');
// This will throw exception because what the hell is j? It is nowhere to be found.
try
{
if (j === undefined) console.log('j is undefined [j === undefined].');
else console.log('j is not undefined [j === undefined].');
}
catch(e){console.log('Error!!! Cannot use [j === undefined] because j is nowhere to be found in our source code.');}
// However this will not throw exception
if (typeof j === 'undefined') console.log('j is undefined (typeof(x) === \'undefined\'). We can use this check even though j is nowhere to be found in our source code and it will not throw.');
else console.log('j is not undefined [typeof(x) === \'undefined\'].');
};
Si nous appelons le code ci-dessus comme ceci:
f();
La sortie serait la suivante:
x is undefined [x === undefined].
x is undefined [typeof(x) === 'undefined'].
Error!!! Cannot use [j === undefined] because j is nowhere to be found in our source code.
j is undefined (typeof(x) === 'undefined'). We can use this check even though j is nowhere to be found in our source code and it will not throw.
Si nous appelons le code ci-dessus comme celui-ci (avec n'importe quelle valeur en fait):
f(null);
f(1);
La sortie sera:
x is not undefined [x === undefined].
x is not undefined [typeof(x) === 'undefined'].
Error!!! Cannot use [j === undefined] because j is nowhere to be found in our source code.
j is undefined (typeof(x) === 'undefined'). We can use this check even though j is nowhere to be found in our source code and it will not throw.
Lorsque vous effectuez la vérification comme ceci:, typeof x === 'undefined'
vous demandez essentiellement ceci: veuillez vérifier si la variable x
existe (a été définie) quelque part dans le code source. (plus ou moins). Si vous connaissez C # ou Java, ce type de vérification n'est jamais effectué car s'il n'existe pas, il ne se compilera pas.
<== Fiddle Me ==>