Tento překlad není kompletní. Prosím pomozte přeložit tento článek z angličtiny.

Globální vlastnost undefined reprezentuje the primitivní hodnotu undefined. Je to jedna z JavaScriptových primitive types.

Property attributes of undefined
Writable no
Enumerable no
Configurable no

Syntaxe

undefined

Popis

undefined je vlastnost globalního objektu; tzn. že je to proměnná v globálním kontextu. Počáteční hodnota undefined je primitivní hodnota undefined.

V moderních prohlížečích (JavaScript 1.8.5 / Firefox 4+), undefined není konfigurovatelná a zapisovatelná vlastnost od specifikace ECMAScript 5. I když tomu tak je, vyhýbejte se jejímu přepsání.

Proměnná, do které nebyla přiřazena hodnota je typu undefined. Metoda nebo výraz také vracejí undefined jestliže proměnná, která je zpracovávaná nemá přiřazenou hodnotu. Funkce vrací undefined jestliže hodnota nebyla returned.

I když je možné použít undefined jako identifier  v jakémkoli kontextu kromě globálního (protože undefined není reserved word), je toto velmi špatný nápad, který váš kód udělá špatně udržovatelný a těžký na odlaďování.

//TOTO NEDĚLEJTE 

// logs "foo string"
(function() { var undefined = 'foo'; console.log(undefined, typeof undefined); })();

// logs "foo string"
(function(undefined) { console.log(undefined, typeof undefined); })('foo');

Příklady

Ostrá rovnost a undefined

Můžete použít undefined operátory na ostrou rovnost či nerovnost k zjištění, jestliže proměnná má hodnotu. V následujícím kódu proměnná x není inicializovaná, a if tento výraz vyhodnotí jako pravdivý.

var x;
if (x === undefined) {
   // tyto výrazy se provedou
}
else {
   // tyto výrazy se neprovedou
}

Poznámka: operátor na ostrou rovnost zde musí být použit než standartní operátor na rovnost, protože x == undefined také zkontroluje, jestli x je null, zatímco na ostrou rovnost nikoli. null není ekvivalentem k undefined. Podívejte se comparison operators na detaily.

Operátor typeofundefined

Alternativou může být operátor typeof, který zde může být použit:

var x;
if (typeof x === 'undefined') {
   // tyto výrazy se provedou
}

Další důvodem k užití typeof je, že nevyhodí chybu, pokud proměnná nebyla deklarována.

// x nebyla deklarována
if (typeof x === 'undefined') { // vrátí true bez chyby
   // tyto výrazy se provedou
}

if (x === undefined) { // vyhodí ReferenceError

}

Avšak, této technice byste se měli vyvarovat. JavaScript je jazyk se statickým kontextem, takže znalost toho, jestli proměnná byla deklarovaná může být čtena pokud byla deklarována v uzavřeném kontextu. Jedinou výjimkou je globální kontext, ale globální kontext je přiřazen ke globálnímu objektu, takže existence proměnné v globálním kontextu může být udělána zkontrolováním existence vlastnosti globalního objektu (např. použitím operátoru in).

Operátor void a undefined

Operátor void je třetí alternativou.

var x;
if (x === void 0) {
   // tyto výrazy se provedou
}

// y nebyla deklarována
if (y === void 0) {
   // throws a - Uncaught ReferenceError: y is not defined
}

Specifications

Specification Status Comment
ECMAScript 1st Edition (ECMA-262)
The definition of 'undefined' in that specification.
Standard Počáteční definice. Implementováno v  JavaScriptu 1.3.
ECMAScript 5.1 (ECMA-262)
The definition of 'undefined' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'undefined' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'undefined' in that specification.
Draft  

Podpora v prohlížečích

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic supportChrome Full support YesEdge Full support YesFirefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Štítky a přispěvatelé do dokumentace

Přispěvatelé této stránky: VelociraptorCZE
Poslední aktualizace od: VelociraptorCZE,