undefined
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
Сводка
ÐнаÑение глобалÑного ÑвойÑÑва undefined пÑедÑÑавлÑÐµÑ Ð·Ð½Ð°Ñение undefined. ÐÑо одно из пÑимиÑивнÑÑ
знаÑений JavaScript.
ÐÑÑибÑÑÑ ÑвойÑÑва undefined | |
|---|---|
| ÐапиÑÑваемое | Ð½ÐµÑ |
| ÐеÑеÑиÑлÑемое | Ð½ÐµÑ |
| ÐаÑÑÑаиваемое | Ð½ÐµÑ |
ÐнÑеÑакÑивнÑй пÑимеÑ
function test(t) {
if (t === undefined) {
return "Undefined value!";
}
return t;
}
let x;
console.log(test(x));
// Expected output: "Undefined value!"
СинÑакÑиÑ
undefined
ÐпиÑание
undefined ÑвлÑеÑÑÑ ÑвойÑÑвом глобалÑного обÑекÑа, Ñо еÑÑÑ, ÑÑо пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð² глобалÑной облаÑÑи видимоÑÑи. ÐаÑалÑнÑм знаÑением undefined ÑвлÑеÑÑÑ Ð¿ÑимиÑивное знаÑение undefined.
Ð ÑовÑеменнÑÑ
бÑаÑзеÑаÑ
(JavaScript 1.8.5 / Firefox 4+), undefined ÑвлÑеÑÑÑ Ð½ÐµÐ½Ð°ÑÑÑаиваемÑм и незапиÑÑваемÑм ÑвойÑÑвом, в ÑооÑвеÑÑÑвии Ñо ÑпеÑиÑикаÑией ECMAScript 5. Ðаже когда ÑÑо не Ñак, избегайÑе его пеÑеопÑеделениÑ.
ÐеÑеменнаÑ, не имеÑÑÐ°Ñ Ð¿ÑиÑвоенного знаÑениÑ, Ð¾Ð±Ð»Ð°Ð´Ð°ÐµÑ Ñипом undefined. Также undefined возвÑаÑаÑÑ Ð¼ÐµÑод или инÑÑÑÑкÑиÑ, еÑли пеÑеменнаÑ, ÑÑаÑÑвÑÑÑÐ°Ñ Ð² вÑÑиÑлениÑÑ
, не Ð¸Ð¼ÐµÐµÑ Ð¿ÑиÑвоенного знаÑениÑ. ФÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ undefined, еÑли она не возвÑаÑÐ°ÐµÑ ÐºÐ°ÐºÐ¾Ð³Ð¾-либо знаÑениÑ.
ÐоÑколÑÐºÑ undefined не ÑвлÑеÑÑÑ Ð·Ð°ÑезеÑвиÑованнÑм Ñловом, он Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² каÑеÑÑве иденÑиÑикаÑоÑа (имени пеÑеменной) в лÑбой облаÑÑи видимоÑÑи, за иÑклÑÑением глобалÑной.
// пеÑаÑÐ°ÐµÑ 'foo string'
(function () {
var undefined = "foo";
console.log(undefined, typeof undefined);
})();
// пеÑаÑÐ°ÐµÑ 'foo string'
(function (undefined) {
console.log(undefined, typeof undefined);
})("foo");
ÐÑимеÑÑ
>ÐÑимеÑ: ÑÑÑогое ÑÑавнение и undefined
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ undefined и опеÑаÑоÑÑ ÑÑÑогого ÑавенÑÑва или неÑавенÑÑва Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñого, Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð·Ð½Ð°Ñение. Ð ÑледÑÑÑем коде пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ x не опÑеделена и инÑÑÑÑкÑÐ¸Ñ if вÑÑиÑлÑеÑÑÑ Ð² true.
var x;
if (x === undefined) {
// ÑÑи инÑÑÑÑкÑии бÑдÑÑ Ð²ÑполненÑ
} else {
// ÑÑи инÑÑÑÑкÑии не бÑдÑÑ Ð²ÑполненÑ
}
ÐÑимеÑание:
ÐдеÑÑ Ð¸ÑполÑзÑеÑÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ ÑÑÑогого ÑавенÑÑва (иденÑиÑноÑÑи) вмеÑÑо пÑоÑÑого опеÑаÑоÑа ÑавенÑÑва, поÑколÑÐºÑ x == undefined Ñакже пÑовеÑÑеÑ, ÑвлÑеÑÑÑ Ð»Ð¸ x ÑавнÑм null, в Ñо вÑÐµÐ¼Ñ ÐºÐ°Ðº опеÑаÑÐ¾Ñ Ð¸Ð´ÐµÐ½ÑиÑноÑÑи ÑÑого не делаеÑ. null не ÑквиваленÑен undefined. ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии ÑмоÑÑиÑе опеÑаÑоÑÑ ÑÑавнениÑ.
ÐÑимеÑ: опеÑаÑÐ¾Ñ typeof и undefined
РкаÑеÑÑве алÑÑеÑнаÑÐ¸Ð²Ñ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ typeof:
var x;
if (typeof x === "undefined") {
// ÑÑи инÑÑÑÑкÑии бÑдÑÑ Ð²ÑполненÑ
}
Ðдной из пÑиÑин иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа typeof Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñа, ÑÑо он не вÑбÑаÑÑÐ²Ð°ÐµÑ Ð¾ÑибкÑ, еÑли пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ бÑла опÑеделена.
// пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ x не бÑла опÑеделена Ñанее
if (typeof x === "undefined") {
// вÑÑиÑлиÑÑÑ Ð² true без оÑибок
// ÑÑи инÑÑÑÑкÑии бÑдÑÑ Ð²ÑполненÑ
}
if (x === undefined) {
// вÑÐºÐ¸Ð½ÐµÑ ReferenceError
}
Ðднако, Ñловки Ñакого Ñода Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑÑÑ. JavaScript ÑвлÑеÑÑÑ ÑзÑком Ñо ÑÑаÑиÑеÑкой облаÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи, Ñак ÑÑо ÑзнаÑÑ, бÑла ли пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾Ð¿Ñеделена, можно пÑÑÑм пÑоÑмоÑÑа, бÑла ли она опÑеделена в оÑ
ваÑÑваÑÑем конÑекÑÑе. ÐдинÑÑвеннÑм иÑклÑÑением ÑвлÑÐµÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑÐ½Ð°Ñ Ð¾Ð±Ð»Ð°ÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи, но глобалÑÐ½Ð°Ñ Ð¾Ð±Ð»Ð°ÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи пÑивÑзана к глобалÑÐ½Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ, Ñак ÑÑо пÑовеÑка ÑÑÑеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑеменной в глобалÑном конÑекÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾ÑÑÑеÑÑвлена пÑÑÑм пÑовеÑки ÑÑÑеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ ÑвойÑÑва глобалÑного обÑекÑа (напÑимеÑ, иÑполÑзÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ in).
ÐÑимеÑ: опеÑаÑÐ¾Ñ void и undefined
ТÑеÑÑей алÑÑеÑнаÑивой ÑвлÑеÑÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ void.
var x;
if (x === void 0) {
// ÑÑи инÑÑÑÑкÑии бÑдÑÑ Ð²ÑполненÑ
}
// пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ y не бÑла опÑеделена Ñанее
if (y === void 0) {
// вÑÐºÐ¸Ð½ÐµÑ ReferenceError (в оÑлиÑие Ð¾Ñ Ð¾Ð¿ÐµÑаÑоÑа `typeof`)
}
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-undefined> |