TypeError: "x" is (not) "y"

Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅

TypeError: "x" is (not) "y"

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ:
TypeError: "x" is undefined
TypeError: "x" is null
TypeError: "undefined" is not an object
TypeError: "x" is not an object or null
TypeError: "x" is not a symbol

Π’ΠΈΠ΄ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π°

Какво сС ΠΎΠ±ΡŠΡ€ΠΊΠ°?

Π’ΡŠΡ€Π½Π°Ρ‚ΠΈΡΡ‚ Ρ‚ΠΈΠΏ Π½Π΅ отговаря Π½Π° очакванията. Π’ΠΎΠ²Π° сС случва чСсто ΠΏΡ€ΠΈ Π²ΡŠΡ€Π½Π°Ρ‚Π° стойност undefined ΠΈΠ»ΠΈ null.

Някои ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΊΠ°Ρ‚ΠΎ Object.create() ΠΈΠ»ΠΈ Symbol.keyFor() освСн Ρ‚ΠΎΠ²Π° изискват Π΄Π° ΠΈΠΌ бъдС прСдоставСн ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ

Π‘Π»ΡƒΡ‡Π°ΠΈ, ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‰ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π°

// Π‘Π»ΡƒΡ‡Π°ΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ substring няма Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ.
// Вакива са undefined и null.
var foo = undefined;
foo.substring(1); // TypeError: foo is undefined

var foo = null;
foo.substring(1); // TypeError: foo is null


// ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΈ
// Π²ΡŠΡ€Ρ…Ρƒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ.
var foo = {}
Symbol.keyFor(foo); // TypeError: foo is not a symbol

var foo = 'bar'
Object.create(foo); // TypeError: "foo" is not an object or null

ΠŸΠΎΠΏΡ€Π°Π²ΡΠ½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π°

Π—Π° Π΄Π° ΠΎΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° Π² случай Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π», сочСщ към стойност undefined ΠΈΠ»ΠΈ null, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° typeof.

if (typeof foo !== 'undefined') {
  // Π‘Π΅Π³Π° Π·Π½Π°Π΅ΠΌ, Ρ‡Π΅ foo ΠΈΠΌΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° стойност
  // ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ.
}

Π’ΠΈΠΆΡ‚Π΅ ΡΡŠΡ‰ΠΎ