Yerel değişkenler için, localVar === undefined
yerel kapsam içinde bir yerde tanımlanmış olmaları ya da yerel olarak değerlendirilmemeleri gerektiği için kontrol etmek işe yarayacaktır.
Yerel olmayan ve hiçbir yerde tanımlanmayan değişkenler için, kontrol someVar === undefined
istisnayı atar: Yakalanmamış ReferenceError: j tanımlanmamış
Yukarıda söylediğim şeyi açıklığa kavuşturacak bazı kod. Daha fazla netlik için lütfen satır içi yorumlara dikkat edin .
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\'].');
};
Yukarıdaki kodu böyle çağırırsak:
f();
Çıktı şu olurdu:
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.
Yukarıdaki kodu bu şekilde çağırırsak (aslında herhangi bir değerle):
f(null);
f(1);
Çıktı şöyle olacaktır:
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.
Bunu şu şekilde yaptığınızda: typeof x === 'undefined'
temelde şunu soruyorsunuz: Lütfen değişkenin x
kaynak kodda bir yerde olup olmadığını (tanımlanmışsa) kontrol edin . (Az çok). C # veya Java biliyorsanız, bu tür bir denetim hiçbir zaman yapılmaz, çünkü yoksa, derlenmez.
<== Fiddle Me ==>