JavaScript Pārbaudiet mainīgā veida. Veida saņemšanas operators

a \u003d (b\u003e 0) && (c + 1! \u003d d); Karogs \u003d! (Statuss \u003d 0);

14.5. Tabula. Loģikas operatori

Operatora apraksts

! Ne (loģisks inversija)

&& Un (loģiskā reizināšana)

|| Vai loģisks papildinājums)

14.6. Tabula. Operatoru un un vai. \\ T

Operand 1.

Operand 2.

14.7. Tabula. Operatora izpildes rezultāti nav

Veida saņemšanas operators

Tipa saņemšanas operatorstypeof atgriež virkni, kas apraksta operanda datu veidu. Operand, kuru veids, kas jums jāzina, tiek ievietoti pēc šī operatora un iekļūst iekavās:

s \u003d typeof ("str");

Šīs izteiksmes izpildes rezultātā mainīgā S tā būs virkne "virkne", apzīmējot virknes veidu.

Visas vērtības, ko tabulā ir norādītas tipa operators. 14.8.

14.8. Tabula. Vērtības, ko atgriež tipa operators

Datu tips

Atgriešanās līnija

Virkne

Skaitlisks

14.8. Tabula (beigas)

Datu tips

Atgriešanās līnija

Loģisks

Saderība un datu tipa konvertēšana

Ir pienācis laiks apsvērt vēl divus svarīgus jautājumus: datu tipu saderību un konvertējot vienu tipu uz citu.

Kas notiek, ja salocītas divas ciparu vērtības? Tas ir labi - vēl viena skaitliska vērtība. Un, ja jūs salociet numuru un virkni? Ir grūti pateikt ... Šeit JavaScript saskaras ar problēmu nesaderību datu tipiem un mēģina padarīt šos veidus saderīgus, pārveidojot vienu no tiem uz citu. Pirmkārt, viņš cenšas pārvērst rindu uz numuru un, ja tas pārvalda, veic papildinājumu. Ja neveiksmes, skaits tiks pārveidots par virkni, un abas rindas tiks apvienotas. Piemēram, kā rezultātā, īstenojot Web scenāriju no saraksta 14.6, vērtību mainīgo B, pievienojot no mainīgo A tiks pārveidota ciparu tipa; Tādējādi mainīgais C satur vērtību 23.

Sarakstā 14.6.

var A, B, C, D, E, F; a \u003d 11;

b \u003d "12"; c \u003d a + b;

d \u003d "JavaScript"; E \u003d 2;

Bet, tā kā vērtību mainīgo d nevar pārvērsties uz numuru, vērtība E tiks pārvērsta virknē, un rezultāts - vērtība F - kļūs vienāds

Atkarībā no konkrētā gadījuma loģiskās vērtības tiek konvertētas vai nu ciparu vai virknes. Patiesā vērtība tiks pārvērsta par 1. vai virkni "1", un Value False - 0 vai "0". Savukārt 1. numurs tiks pārvērsts patiesībā, un numurs 0 ir nepatiess. Arī viltus tiks pārveidots

nulles un nenoteiktas vērtības.

III daļa. Uzvedības tīmekļa lapas. Web scenāriji

Var redzēt, ka JavaScript cīnās pareizi veikt pat nepareizi rakstītus izteiksmes. Dažreiz izrādās, bet biežāk viss darbojas, kā plānots, un galu galā, interneta scenārija ieviešana tiek pārtraukta saistībā ar kļūdas atklāšanu pilnībā savā citā vietā, par pilnīgi pareizu paziņojumu. Tāpēc ir labāk novērst šādus incidentus.

Operatoru prioritāte

Pēdējais jautājums, ko mēs izskatīsim šeit, ir operatoru prioritāte. Kā mēs atceramies, prioritāte ietekmē secību, kādā operatori tiek veikti izteiksmē.

Ļaujiet būt šāda izteiksme:

Šajā gadījumā, pirmkārt, līdz mainīgā b vērtība tiks pievienota C, un tad 10 tiks atskaitīti no summas. Šīs vārda operatoriem ir tāda pati prioritāte, un tādēļ darbojas stingri pa labi.

Tagad apsveriet šādu izteiksmi:

Šeit vispirms tiks veikts reizinājums par C vērtību par 10, un tikai tad vērtība B vērtība tiks pievienota rezultātam. Reizināšanas operatoram ir lielāka prioritāte nekā papildus operators, tāpēc pasūtījums "stingri palicis labajā pusē", tiks sadalīti.

Zemākā prioritāte uzdevumu operatoriem. Tas ir iemesls, kāpēc izteiksme pati pirmais tiek aprēķināts, un tad tā rezultāts tiek piešķirts mainīgajam.

Iebildums kopumā visu operatoru izpildes pamatprincips ir šāds: Pirmie operatori tiek veikti ar augstāku prioritāti, un tikai vēlāk operatori ar zemāku. Operatori ar tādu pašu prioritāti tiek veiktas to secībā (no kreisās uz labo pusi).

Iebildums tabula. 14.9 ASV pētītie operatori ir uzskaitīti to prioritāšu secībā.

14.9. Tabula. Operatoru prioritāte (dilstošā secībā)

Operatori

Apraksts

++ - - ~! Typeof.

Pieaugums, samazinājums, zīmju maiņa, loģiski, definīcija

Reizināšana, sadalīšana, līdzsvars

Pievienošana un rindu apvienošana, atņemšana

Operatoru salīdzinājums

Loģisks I.

14. nodaļa. Ievads tīmekļa programmās. JavaScript valoda

14.9. Tabula (beigas)

Operatori

Apraksts

Loģiski vai

Nosacījuma operators (skatīt zemāk)

= <оператор>=

Uzdevums, vienkāršs un sarežģīts

Uzmanību!

Atcerieties šo tabulu. Nepareiza procedūra operatoru veikšanai var radīt sarežģītas kļūdas, kurās ārēji absolūti pareiza izteiksme sniedz nepareizu rezultātu.

Bet kas notiks, ja mums ir nepieciešams, lai izjauktu parasto operatoru izpildes kārtību? Mēs izmantojam kronšteinus. Ar šādu ierakstu iekavās iekavās, operatori tiek veikti vispirms:

a \u003d (b + c) * 10;

Šeit vispirms tiks pabeigta mainīgo lielumu B un C vērtību pievienošana, un pēc tam iegūtā summa tiks reizināta ar 10.

Operatoriem, kas iekļauti iekavās, attiecas arī uz prioritāti. Tāpēc bieži izmanto vairākus kronšteinus:

a \u003d ((b + c) * 10 - d) / 2 + 9;

Šeit operatori tiks veikti šādā secībā:

1. Papildinājums B un C.

2. Reizinot summu, kas saņemta par 10.

3. Atņemiet D no darba.

4. Starpība par starpību par 2.

5. Gatavs 9 līdz privātam.

Ja noņemat kronšteinus:

a \u003d b + c * 10 - d / 2 + 9;

operatoru izpildes kārtība būs:

1. Reizināšana C un 10.

2. Dalot D līdz 2.

3. Papildus B un darbojas C un 10.

4. Saņemtā summa no sadalījumad 2.

5. Pielāgots 9 uz iegūto starpību.

Izrādās pilnīgi atšķirīgs rezultāts, vai ne?

  • Nenoteikts: nenoteikts
  • Null: "objekts"
  • Būla: "Būla"
  • Numurs: "numurs"
  • String: "String"
  • Funkcija: "Funkcija"
  • Viss pārējais: "objekts"

Šai tabulai jāpievieno šādi komentāri:

1. Typeof null \u003d\u003d\u003d "objekts".

Teorētiski šeit ir smalks brīdis. Valodās ar statisku rakstīšanu objekta tipa mainīgais nedrīkst saturēt objektu (nulles, nulle, nulles rādītāju).

Praktiski - JavaScript ir neērta. Tāpēc es 5.1 izstrādātāji gatavojas veikt intuitīvu lietu: typeof null \u003d\u003d\u003d "null".

Bet, tā kā mums joprojām ir ES3 aplis, nedariet kļūdu, piemēram, par to:

/ * Funkcija meklē kādu objektu un atgriež to vai , ja nekas netiks atrasts * / funkciju meklēšana () var Obj \u003d meklēšana (); ja (typeof Obj \u003d\u003d\u003d "objekts") (//, vai mēs patiešām atradām objektu (neizdoties) obj.metod ();)

2. Neaizmirstiet par iesaiņojuma objektiem (jauns skaitlis (5) \u003d\u003d\u003d "objekts").

3. Un neaizmirstiet labās pārlūkprogrammas izveidot kaut ko ar uzņemošajiem objektiem.

Vai nav pārsteigts, ka Safari pastāvīgi uzskata htmlcollection ar funkcijas veidu, un IE agrāk nekā 9. versija saglabā mūsu iecienītāko brīdinājumu () funkciju objektam. Arī Chrome izmanto, lai lasītu regexp funkciju, bet tagad šķiet, ka tā ir izveidota un atbildēt uz to objektu.

tOSTRING ()

Mēģinot noskaidrot vērtības veidu atbilstoši tās tostringam () metode ir bezjēdzīga. Visās "klasēs" šī metode ir ignorēta tā.

Par izejas atkļūdošanas informāciju, metode ir laba, bet mainīgais veids nenosaka to.

Object.prototipe.tostring ()

Lai gan tostrings ir ignorēti konkrētās "klasēs", mums joprojām ir sākotnējā īstenošana no objekta. Mēģināsim to izmantot:

Konsole.Log (objekts .prototips .Tostring .call (vērtība));

konsole.Log (object.prototipe.tostring.call (vērtība));


Klintons atšķaida šo pullomotīnu

Nepietiekami, šī metode darbojas pārsteidzoši labi.

Par skalāru veidiem, atgriešanās ,,,,,,

Smieklīgi ir tas, ka pat jaunais numurs (5), par kuru šeit atgriežas raksturs.

Uz nulles un undefined metodi dot neveiksmes. Dažādas pārlūkprogrammas atgriežas, tad sagaidāms un pēc tam kopumā. Tomēr ir viegli noteikt šo divu vērtību veidu un bez tā.

Interesanti sākas, kad mēs tuvojamies objektiem (tiem, kas ir tipa \u003d\u003d\u003d "objekts").

iebūvēti objekti strādā, praktiski, ar sprādzienu:

  • {} —
  • Datums -
  • Kļūda -
  • Regexp -

Vienīgais nokrīt no argumentu saraksta, kas tas ir.
Ar uzņemošajiem objektiem atkal sliktāk.

IE, Dom objekti sāka kļūt par "normāliem" objektiem tikai no 8. versijas un pēc tam ne līdz galam. Tāpēc, IE 6-8, visi šie objekti (htmlcollection, domelement, textnode, un tajā pašā laika dokumentā un logā) vienkārši vada.

Visās pārējās pārlūkprogrammās (ieskaitot IE9) ar to, ka jūs varat kaut ko darīt. Lai gan arī viss nav viegli: htmlcollection ir tur, tad. Logs - tad, tad. Bet no tā jūs jau varat mēģināt kaut ko satraukt.

Sarežģītāka ar domelement: tas tiek parādīts formā - tā formātu katram tagam. Bet šeit regulāri palīdzēs mums.

Ar citiem resursdatoriem (atrašanās vietas un navigatoru testos) par to pašu stāstu. Visur, izņemot IE, tos var identificēt pēc rindas.

Objekta izmantošanas mīnusi.Prototipe.Tostring ():

1. Šī iespēja nav iesvētīta ar standartu. Un mums vajadzētu drīzāk priecāties šeit, ka viss darbojas tik labi, un ne sasmalcināt par dažiem trūkumiem.

2. Tipa sintakses modeļa noteikšana, kas atgriezta ar metodi, kas nav vispār, lai noteiktu veidu, un tas joprojām ir saistīts ar objektu, uz kuru tas nav piemērots, atstāj dažus nogulsnes uz dušas.

3. Vecajā IE, kā redzams, uzņēmēja objekti netiek identificēti.

Tomēr tas ir pilnīgi darba lieta, lietojot kopā ar citiem līdzekļiem.


Dizaineri

Un visbeidzot, dizaineri. Kas var labāk pateikt par "klases" objektu JS, ja ne viņa dizainers?

Nulles un nenoteikts nav iesaiņojuma objektu vai dizaineru.

Atlikušie skalāra veidi ir attiecīgi, jūs varat saņemt konstruktoru:

(5) .Constructor \u003d\u003d\u003d numurs; (Numurs .nan) .Constructor \u003d\u003d\u003d numurs; (TRUE) .Constructor \u003d\u003d\u003d Būla; ("Virkne") .Constructor \u003d\u003d\u003d virkne;

(5) .Constructor \u003d\u003d\u003d numurs; (Numurs.nan) .Constructor \u003d\u003d\u003d numurs; (TRUE) .Constructor \u003d\u003d\u003d Būla; ("Virkne"). Konstruktors \u003d\u003d\u003d virkne;

Bet instancē šeit neiziet:

5 gadījums; // viltus numurs .nan gadījums; // viltus īstā būla; // virkne virkne; // FALSE

5 gadījums; // viltus numuru.Nan gadījums; // viltus īstā būla; // virkne virkne; // FALSE

(Spēles darbosies ilgstošām jauniem skaitļiem (5))

Ar funkcijām (kas ir arī objekti) un instanci:

Konsole.Log (funkcija () ()); // īsta konsole.Log ((funkcija () ()) .Constructor \u003d\u003d\u003d funkcija); // TRUE.

konsole.Log (funkcija () ()); // īsta konsole.Log (funkcija () ()). Konstruktors \u003d\u003d\u003d funkcija); // TRUE.

Visas iegultās klases ir viegli identificē arī dizaineri: masīvs, datums, regexp, kļūda.

Viena problēma notiek šeit ar argumentiem, kuru konstruktors ir objekts.

Un otrais ar pašu objektu, vai drīzāk, kā atribūte objektu, kas izveidots, izmantojot lietotāju dizaineru.

Tātad jūs varat definēt tikai pamata objektu:

objekta priekšmets;

Kā viens no definīcijas variantiem - lai pārvietotos visus citus iespējamos veidus (masīvu, kļūdu ...), un, ja ne zem viena nav apdraudēta - "objekts".

Dizaineri un resursdatori

Ar uzņemošajiem objektiem ir sliktāki.

Sāksim ar to, ka ti, līdz 7. versijai ieskaitot tos neuzskata par normāliem objektiem. Viņiem vienkārši nav dizaineru un prototipu (jebkurā gadījumā programmētājs nesasniedz tos).

Citās pārlūkprogrammās ir labākas. Dizaineri ir un jūs varat definēt vērtību klasi. Tos sauc tikai dažādās pārlūkprogrammās dažādos veidos. Piemēram, par htmlcollection, dizainers būs vai nu htmlcollection vai naids, vai pat nodelistConstructor.

Jums vajadzētu arī definēt pamata dizaineru domelement. FF, tas, piemēram, htmlelement, no kura htmlivelement un citi jau ir mantojuši.

Firefox tiek izmests Firefox zem 10. versijas un opera zem 11. Ir kolekcijas konstruktors - objekts.

konstruktors.

Vairāk konstruktori ir nosaukuma īpašums, kas var būt noderīgs.

Tas satur dizainera funkcijas nosaukumu, piemēram, (5) .Constructuror.name \u003d\u003d\u003d "numurs".

Bet:
1. IE IR Tas nav pat, pat 9. vietā.
2. Uzņēmējas objektos pārlūkprogrammas atkal tiek uzstādītas, ka daudz (un bieži vien viņiem nav šīs īpašuma vispār). Operā domelements ir dizainera nosaukums kopumā funkciju.Prototips.
3. Argumenti atkal "objekts".

secinājumi

Neviena no iesniegtajām metodēm nav simts procentu likmes definīciju tipa / klases vērtības visās pārlūkprogrammās. Tomēr kopumā tie ļauj to darīt.

Tuvākajā nākotnē es centīšos savākt visus datus zīmēs un sniegt piemēru definēšanas funkciju.

JavaScript. vai Js. (Saīsināts) nav vienkārša valoda un iesācēju izstrādātāji nekavējoties nezina par to. Sākumā viņi atzīst pamatus, un viss šķiet krāsains un skaists. Meklējat nedaudz dziļāku, JavaScript parādās masīvi, objekti, zvani un viss, kas bieži padara smadzenes.

JavaScript ir svarīgi pareizi pārbaudīt mainīgo veidu. Pieņemsim, ka vēlaties zināt, vai mainīgais ar masīvu vai objektu? Kā to pārbaudīt pareizi? Šajā konkrētajā gadījumā pārbaudes laikā ir triki, un tas būs šis ieraksts. Pieņemsim nekavējoties turpināt.

Mainīga tipa pārbaude

Piemēram, jums ir jāpārbauda ir objekta mainīgais, masīvs, virkne vai numurs. Lai to izdarītu, jūs varat izmantot tipa, bet tas ne vienmēr dos patiesību un zemāk es redzam, kāpēc.

Es uzrakstīju šo piemēru, lai spilgti parādītu, kāpēc typeof ne vienmēr ir pareizā izvēle.

Var _comparison \u003d (virkne: "virkne", int: 99, peldošs: 13.555, objekts: (Sveiki: "Sveiki"), masīvs: jauns masīvs (1, 2, 3)); // Atgrieziet masīvu ar atslēgas var _objkeys objektu \u003d objekts.Keys (_comparison); par (var i \u003d 0; i<= _objKeys.length - 1; i++) { // выведем в консоль тип каждой переменной console.log(typeof _comparson[_objKeys[i]]); }

Kodu izpildes rezultāts:

Virknes numura objekta objekts

Pa labi? - Protams, nē. Ir divas problēmas. Katrs no tiem tiks aprakstīts detalizēti un ieteikt.

Pirmā problēma: pludiņa numurs, produkcija kā numurs

Salīdzinājums.Slavs nav skaitlis, un tā vietā numuram jābūt peldētam (peldošā punkta numurs). Tas ir fiksēts, varat izveidot pārbaudes funkciju kā zemāk esošajā kodā.

Var _floatnumber \u003d 9.22; var _notfloatnumber \u003d 9; Konsole.Log (isfloat (_floatnumber)); Konsole.Log (isfloat (_notfloatnumber)); Konsole.Log (isfloat (")); Funkcija isfloat (n) (atgriešanās numurs (n) \u003d\u003d\u003d n && n% 1! \u003d\u003d 0;);

ISFLOAT () funkcija veic pārbaudes visas vērtības ar peldošo punktu skaitu. Vispirms pārbauda, \u200b\u200bvai mainīgais ir vienāds n. numurs (numurs (n) \u003d\u003d\u003d n) un, ja jā, tad vēl viena validācijas pārbaude tiek veikta ar atlikumu, un, ja ir atlikums, tad Buleva atgriežas ( taisnība. vai nepatiess) Rezultāts (n% 1! \u003d\u003d 0).

Iepriekš minētajā piemērā atgriežas taisnība., nepatiess un nepatiess. Pirmā vērtība ir peldēttips, otrais nav - tas ir parastais numurs un pēdējais tikai tukšs virkne, kas neatbilst noteikumiem.

Otrā problēma: masīvs tika noteikts kā objekts

Pirmajā piemērā masīvs tika parādīts kā objekts, un tas nav ļoti labs, jo dažreiz jums ir nepieciešams izmantot šo konkrēto veidu un neko vairāk.

Ir vairāki veidi, kā pārbaudīt mainīgo masīva veidu.

Pirmā iespēja (laba iespēja). Pārbaudiet datu aksesuāru ar masīvu, izmantojot instanci ().

Var dati \u003d jauns masīvs ("hello", "pasaule"); VAR ISARR \u003d masīvs;

Otrā versija (laba iespēja). Array.isarray () metode atgriež Būla vērtību, kas būs atkarīga no tā, vai mainīgais ir masīvs vai ne ().

Var dati \u003d jauns masīvs ("hello", "pasaule"); var isarr \u003d array.isarray (dati);

Trešais variants (labākais, bet garš). Ērtības labad jūs varat veikt šāda veida funkciju. Izmantojot objektu, mēs to darām. Ja rezultāts objekts.Prototype.tostring.call (dati) nav vienāds ar mainīgo nav masīvs ().

Var dati \u003d jauns masīvs ("hello", "pasaule"); var isarr \u003d object.prototipe.tostring.call (dati) \u003d\u003d ""; Konsole.Log (Isarr);

Pēdējais rezultāts ir ērta funkcija:

Funkcija tiekrara (dati) (atgriešanās objekts.Prototype.tostring.call (dati) \u003d\u003d "")

Tagad jūs varat zvanīt uz izarra () funkcijām un kā argumentu, lai iestatītu masīvu vai kaut ko citu un redzētu rezultātu.

Pēcvārds

Ierakstīšana izrādījās diezgan liela, nekā sākotnēji domāja. Bet es esmu apmierināts ar to, jo viņa īsi un skaidri apraksta grūtības, pārbaudot mainīgos lielumus JavaScript un kā nokļūt ap tiem.

Ja jums ir kādi jautājumi pa kreisi - rakstiet tos tālāk uz šo ierakstu. Es labprāt palīdzēju.

Operators Typeof. Atgriež virkni, kas norāda operanda veidu.

Sintakse

Operand seko tipa operatoram:

Typeof. operands.

Parametri

operands. Tas ir izteiksme, kas pārstāv objektu vai primitīvu, kuru veids ir jāatdod.

Apraksts

Nākamajā tabulā redzamas iespējamās atgrieztās tipa vērtības. Papildu informācija par veidiem un primitīviem ir lapā.

Piemēri

// cipari typeof 37 \u003d\u003d\u003d "numurs"; Typeof 3.14 \u003d\u003d\u003d "numurs"; Typeof (42) \u003d\u003d\u003d "numurs"; Math.ln2 \u003d\u003d\u003d "numurs"; Infinity typity \u003d\u003d\u003d "numurs"; Typeof nan \u003d\u003d\u003d "numurs"; // Neskatoties uz to, ka tas ir "ne-a-numurs" (nav numurs) tipa numurs (1) \u003d\u003d\u003d "numurs"; // Nekad neizmantojiet šo ierakstu! // virknes tips "" \u003d\u003d\u003d "virkne"; Typeof "BLA" \u003d\u003d\u003d "virkne"; Typeof "1" \u003d\u003d\u003d "virkne"; // Lūdzu, ņemiet vērā, ka virknes iekšpusē joprojām ir tipa virkne (typeof 1) \u003d\u003d\u003d "virkne"; // typeof vienmēr atgriezīsies šajā gadījumā tipa stīgu virkne ("ABC") \u003d\u003d\u003d "virkne"; // Nekad neizmantojiet šo ierakstu! // Booleans TRUED \u003d\u003d\u003d "Būla"; FALSE \u003d\u003d\u003d "BUOLEAN"; Būla tipa (taisnība) \u003d\u003d\u003d "Būla"; // Nekad neizmantojiet šo ierakstu! // sym simboli simbols () \u003d\u003d\u003d "simbols" simbols ("foo") \u003d\u003d\u003d "simbols" tipa simbols .iterator \u003d\u003d\u003d "simbols" // undefined typeof undefined \u003d\u003d\u003d "nenoteikts"; Tipa deklarētaButundefinedvariable \u003d\u003d\u003d "nenoteikts"; Undeclaredvariable \u003d\u003d\u003d "nenoteikts"; // objektu type (A: 1) \u003d\u003d\u003d "objekts"; // izmantot array.isarray vai object.prototipe.tostring.call //, lai atšķirtu no parastajiem objektiem un tipa \u003d\u003d\u003d "objektu" masīviem; Jauns datums () \u003d\u003d\u003d "objekts"; // Šis zemāks noved pie kļūdām un problēmām. Nelietojiet! Jauna Būla tipa (TRUE) \u003d\u003d\u003d "Objekts"; Jauns numurs (1) \u003d\u003d\u003d "objekts"; Jauna virkne ("abc") \u003d\u003d\u003d "objekts"; // funkcijas Typeof funkcija () () \u003d\u003d\u003d "funkcija"; C klases () type \u003d\u003d\u003d "funkcija"; Math.sin \u003d\u003d\u003d "funkcija";

nulle

// tas tika noteikts no dzimšanas JavaScript typeof null \u003d\u003d\u003d "objekts";

JavaScript pirmajā ieviešanā vērtības tika prezentētas ar pāra tagu tipu un vērtību. Tag Tag objektiem bija 0. null tika pārstāvēta kā nulles rādītāju (0x00 lielākajā daļā platformu). Līdz ar to nulles taga tips bija nulle, tāpēc tipa atgriešanās vērtība ir fiktīva. ()

Korekcijas tika uzdota Ecmascript (caur slēgšanu), bet tika noraidīts. Tas novestu pie tā, ka null \u003d\u003d\u003d "null".

Izmantojot jauno operatoru

// Visām funkcijām, kas izveidotas, izmantojot "jaunu", būs veids "Objekts" VAR String \u003d jauna virkne ("virkne"); VAR NUM \u003d jauns numurs (100); Typeof iela; // atgriešanās "objekts" num; // atgriezīsies "objekts" //, bet ir izņēmums funkciju VAR FUNC \u003d jaunā funkcija () konstruktors; Func typc; // atgriešanās "funkcija"

Regulāras izteiksmes

Dažās pārlūkprogrammās bija nestandarta papildinājums, ko sauc par regulārām izteiksmēm.

Typeof / s / \u003d\u003d\u003d "funkcija"; // hroms 1-12 neatbilst Ecmascript 5.1 typeof / s / \u003d\u003d\u003d "objekts"; // Firefox 5+ atbilst Ecmascript 5.1

Kļūdas, kas saistītas ar pagaidu mirušajām zonām

Pirms ECMAScript 2015 tika garantēts, ka tipa operators atgriezīs virkni jebkuram operandam, ar kuru to sauca. Tas ir mainījies pēc tam, kad pievienojot nepietiekamību, ļaujiet un const reklāmām ar bloka redzamības apgabalu. Tagad, ja mainīgie ir deklarēti, izmantojot Let un Const, un par tiem sauc par tipa klases deklarācijas vienību, bet pirms paziņojuma, referencerreerror tiek izspiests. Uzvedība atšķiras no nedeklarētiem mainīgiem lielumiem, par kuriem typeof atgriezīsies "nenoteikts". Mainīgie lielumi ar bloka redzamības apgabalu ir "pagaidu mirušā zonā", kas ilgst no bloka sākuma līdz mainīgo lielumu deklarācijai. Šajā zonā, mēģinājums piekļūt mainīgajiem izmet izņēmumu.

Undeclaredvariable \u003d\u003d\u003d "nenoteikts"; Newllibarable typeof; Ļaujiet newllibarlime; // referenror typeofconstvariable; Const newconstvariable \u003d "hello"; // fondsError

Izņēmumi

Visās pašreizējās pārlūkprogrammās ir nestandarta docum.All resursdatora objekts, kas ir definēts nenoteikts.

Typingof document.all \u003d\u003d\u003d "nenoteikts";

Lai gan specifikācija ļauj saviem veidiem veidiem nestandarta eksotiskiem objektiem, ir nepieciešams, lai šie nosaukumi atšķiras no iepriekš noteiktiem. Situācija, kad document.All ir definēts nenoteikts, būtu jāuzskata par ārkārtēju pārkāpumu noteikumiem.

Specifikācijas

Specifikācija Statuss Komentāri
ECMAScript jaunākais projekts (ECMA-262)
Iegrime
Ecmascript 2015 (6. izdevums, ECMA-262)
Definīcija "Typeof operators" šajā specifikācijā.
Standarts
Ecmascript 5.1 (ECMA-262)
Definīcija "Typeof operators" šajā specifikācijā.
Standarts
ECMAScript 3rd Edition (ECMA-262)
Definīcija "Typeof operators" šajā specifikācijā.
Standarts
ECMAScript 1. izdevums (ECMA-262)
Definīcija "Typeof operators" šajā specifikācijā.
Standarts Sākotnējā definīcija. Īstenots JavaScript 1.1

Saderība ar pārlūkiem

Atjauniniet saderības datus par GitHUB

DatoriMobileServeris
Hroms.Mala.Firefox.Internet Explorer.Operas.Safari.Android WebView.Chrome AndroidFirefox AndroidOpera AndroidSafari iOS.Samsung internetsNode.js.
Typeof.Hroms. Pilns atbalsts 1 Mala. Pilns atbalsts 12 Firefox. Pilns atbalsts 1 Ti, ti Pilns atbalsts 3 Operas. Pilns atbalstsSafari. Pilns atbalstsWebView Android Pilns atbalsts 1 Chrome Android Pilns atbalsts 18 Firefox Android Pilns atbalsts 4 Operas android Pilns atbalstsSafari ios. Pilns atbalstsSamsung Internet Android Pilns atbalsts 1.0 nodejs. Pilns atbalsts

Leģenda

Pilns atbalsts Pilns atbalsts

IE specifiskie jēdzieni

IE 6, 7 un 8, daudzi resursdatori ir objekti, bet ne funkcijas. Piemēram.