23.07.2020

JavaScript. Məlumat növləri və operatorlar. JavaScript: Məlumat Növlərinin Çevrilməsi Javascript obyektlərinin bir məlumat növü var


Davam edir kompüter proqramları 7 sayı və ya "HelloWorld!" Mətni kimi dəyərləri manipulyasiya edin. Bir proqramlaşdırma dilində təmsil oluna və işlənə bilən hər bir dəyər müəyyən bir məlumat tipinə aiddir. Məlumat növü, proqramlaşdırma dilində istifadə olunan dəyərlərin növlərini təyin edir.

JavaScript -də məlumat növləri iki kateqoriyaya bölünə bilər: sadə (ibtidai də deyilir) və kompozit (istinad və ya obyektlər də deyilir).

  • sim- mətn sətirləri (onlara adətən sadəcə sətirlər deyilir)
  • nömrə- nömrələri
  • boolean- məntiqi (boolean) dəyərlər

Sadə növlər üçün iki xüsusi dəyər də var:

  • sıfır
  • təyin olunmamış

Kompozit məlumat növlərinə aşağıdakılar daxildir:

  • funksiyası- funksiyalar
  • sıra- seriallar
  • obyekt- obyektlər

Sadə və kompozit növlər arasındakı fərq

Sadə və mürəkkəb növlər arasındakı fərq dəyərləri kopyalayarkən ortaya çıxır.

Dəyişənə (funksiya parametri, xüsusiyyət və ya massiv elementi) ədəd kimi sadə tipli bir dəyər təyin edildikdə, dəyərin özü (bu halda bir ədəd) dəyişənə yazılır. Bir dəyişəni (sadə tipli bir dəyəri ilə) başqa bir dəyişənə təyin edərkən dəyər kopyalanır. Nəticədə, hər bir dəyişənin dəyərin öz nüsxəsi var və dəyişənlərdən birindəki dəyişiklik digərinin dəyərinə heç bir şəkildə təsir etmir:

Var sayı1 = 10; var sayı2 = sayı1; // Dəyər siqnalını kopyalayın ("num1:" + num1 + // 10 "\ nnum2:" + num2); // 10 ədəd1 = 15; // Dəyər siqnalını dəyişdirin ("num1:" + num1 + // 15 "\ nnum2:" + num2); // on

Dəyişənə (funksiya parametri, mülkiyyət və ya massiv elementi) obyekt kimi kompozit tipli bir dəyər təyin edildikdə, dəyişənə dəyərə istinad (bu halda obyekt istinadı) yazılır. Bir dəyişənə (dəyərində kompozit dəyərə istinad olan) başqa bir dəyişənə təyin edərkən, kompozit dəyərə istinad kopyalanır. Nəticədə, hər iki dəyişən eyni kompozit dəyərə istinad edir və dəyişənlərdən birinin dəyərində edilən dəyişikliklər digər dəyişənə təsir edəcək:

Var o1 = (x: 10); var o2 = o1; // Obyekt xəbərdarlığına keçidi kopyalayın ("o1.x:" + o1.x + // 10 "\ no2.x:" + o2.x); // 10 o2.x = 15; // Dəyər siqnalını dəyişdirin ("o1.x:" + o1.x + // 15 "\ no2.x:" + o2.x); // 15

sıfır və təyin olunmamışdır

Null növü yalnız bir dəyərə malikdir, null. Null dəyər boş bir obyektə istinaddır və xüsusi bir məqsəd daşıyır - ümumiyyətlə sonradan bir obyekt təyin ediləcək bir dəyişəni işə salmaq üçün istifadə olunur.

Müəyyən edilməmiş növün yalnız bir dəyəri var - təyin olunmamış. Müəyyən edilməmiş dəyər hər hansı bir dəyərin ilkin yoxluğunu göstərir. Müəyyən edilməmiş dəyəri bu şəkildə əldə edə bilərsiniz:

  • Elan edilmiş, lakin işə salınmamış bir dəyişənə istinad edərkən.
  • Bir obyektin mövcud olmayan xüsusiyyətinə daxil olduqda.
  • Mövcud olmayan bir sıra elementinə daxil olduqda.
  • Funksiya çağırıldıqda arqument olaraq işə salınmayan funksiya parametrlərinə daxil olarkən.
  • Qayıdış dəyəri olmayan funksiyalarla qaytarılır.
  • Operand mövcud olmayan bir dəyişəndirsə operator növü tərəfindən qaytarılır.
var bar; document.write (bar); Cəhd et "

Müəyyən edilməmiş identifikator, əvvəlcədən təyin edilmiş qlobal dəyişənin adıdır və təyin olunmamışdır. Müəyyən edilməmiş dəyişən yalnız oxumaq üçündür.

Obyektləri sarın

Bir proqram hər hansı bir ibtidai tipli bir dəyərin xüsusiyyətinə və ya metoduna daxil olmağa çalışdıqda, tərcüməçi müvəqqəti olaraq ibtidai dəyəri müvafiq tipli bir obyektə çevirir. İbtidai tipli dəyərlərin çevrildiyi müvəqqəti obyektlərə deyilir obyektlərin bağlayıcıları... Bu obyektlər tərcüməçi tərəfindən istədiyiniz mülkə və ya üsula daxil olmaq üçün istifadə olunur. Bir mülkə və ya üsula daxil olduqdan dərhal sonra, sarmalayıcı obyekt məhv edilir. Sarma obyektləri yalnız növ sayı, simli və boolean dəyərlər üçün yaradılmışdır. Sıfır və təyin olunmayan dəyərlərdə sarmalayıcı obyektlər yoxdur: bu dəyərlərin xüsusiyyətlərinə daxil olmaq üçün edilən hər hansı bir cəhd səhv salacaq.

Sarma obyekti üçün yeni bir xüsusiyyət təyin etməyə çalışırsınızsa, o zaman yeni xüsusiyyət saxlanılmayacaq, çünki sarğı obyekti işini bitirdikdən dərhal sonra məhv edilir:

Var str = "mətn"; str.len = 5; // Bir dəyəri olan bir xüsusiyyət təyin edin. Obyekt həmin xəbərdarlıqdan dərhal sonra məhv edilir (str.len); // təyin olunmamışdır, çünki əvvəlki sarğı obyekti artıq məhv edilmişdir

Sarıcı obyektlərə sadəcə ibtidai tipli dəyərlərlə işləmək və bu barədə heç düşünməmək üçün rahatlığın həyata keçirilməsi kimi baxmaq olar.

Dərs nömrəsi 3
JavaScript -də məlumat növləri

Son dərsdə bir dəyişənin bəzi məlumatları (dəyərləri) saxlayan adlı bir yaddaş sahəsi olduğunu öyrəndik.

JavaScript -də hər bir dəyərin öz dəyəri var məlumat növü... JavaScript -də ümumilikdə 6 məlumat növü var, bu JavaScript dərsliyində 4 məlumat növünə baxacağıq:
- rəqəmsal məlumat növünün nömrəsi,
- simli məlumat tipli sətir,
- boolean məlumat növü,
- təyin olunmamış məlumat növü.

Bir az sonra digər ikisini öyrənəcəyik:
- obyekt məlumat tipli obyekt
- boş məlumat növü null

Operator növü

Düşünməzdən əvvəl növləri JavaScript məlumatları , əvvəlcə typeof operatoru ilə tanış olaq, bir dəyişənə hansı məlumat növünün verildiyini öyrənməyə imkan verir, bu aşağıdakı kimi aparılır:

Xəbərdarlıq (VariableName növü);

Bundan sonra, skriptdə bir mesaj göstərilməlidir: nömrə, simli, boolean, təyin olunmamış, obyekt.

Məlumat növü: nömrə

Dəyişənə dəyər olaraq bir ədəd (tırnak işarəsi olmadan) verildikdə, onun məlumat növü rəqəmə çevrilir

Var myNumber; myNumber = 5; xəbərdarlıq (myNumber növü);

Birinci sətirdə myNumber adlı bir dəyişən yaratdıq, ikinci sətirdə dəyişənə 5 dəyər verdik, üçüncüsündə operator tipindən istifadə edərək myNumber dəyişəninin məlumat növünü və alert () funksiyasını hesabladıq. bizə bu hesablamaların nəticəsini göstərdi.

Nəticədə, bu skript mesaj nömrəsini göstərəcəkdir. Nömrəni kotirovkalarla əlavə etsəniz (tək "5" və ya cüt "5") sonra ip olacaq.

Məlumat növü: simli

Dəyişən bir dəyər olaraq ikiqat "" və ya tək tirnoq "" ilə işarələnmiş bir dəyər təyin edildikdə, onun məlumat növü simli olur.

Var myString; myString = "Salam, mənəm JavaScript simli! "; xəbərdarlıq (myString növü);

Birinci sətirdə myString adlı bir dəyişən yaratdıq, ikinci sətirdə "Salam, mən JavaScript simliyəm!" Üçüncüsündə, typeof operatorundan istifadə edərək, myString dəyişəninin məlumat növünü hesabladıq və alert () funksiyası bizə bu hesablamaların nəticəsini göstərdi. Nəticədə, bu skript mesaj sətrini göstərməlidir.

Məlumat növü: boolean məlumat növü

Dəyişən doğru və ya yalnış, tırnak işarəsi olmadan təyin edildikdə, onun məlumat növü boole olur.

Mantıksız məlumat tipi bir boolean məlumat növüdür, yalnız iki dəyərə malikdir: doğru və ya yalan.

Var myBoolean; myBoolean = doğru; xəbərdarlıq (myBoolean növü);

Birinci sətirdə myBoolean adlı bir dəyişən yaratdıq, ikinci sətirdə dəyişəni true olaraq təyin etdik, üçüncüsündə operator tipindən istifadə edərək myBoolean dəyişənin məlumat növünü hesabladıq və alert () funksiyası bizə göstərdi bu hesablamaların nəticəsidir. Nəticədə, bu skript bizim üçün boolean bir mesaj göstərməlidir.

Boolean məlumat növü, müqayisə əməliyyatları, məntiqi əməliyyatlar və filial operatoruna həsr olunmuş növbəti dərslərdə daha ətraflı öyrənəcəyik.

Məlumat növü: təyin olunmamışdır

Müəyyən edilməmiş məlumat növü bir dəyişən elan edildikdə, lakin işə salınmadıqda görünür, yəni. dəyişən yaradılıb, lakin ona heç bir dəyər verilməyib.

Var myUndefined; xəbərdarlıq (myUndefined növü);

Birinci sətirdə myUndefined adlı bir dəyişən yaratdıq, ikinci sətirdə typeof operatorundan istifadə edərək myUndefined dəyişəninin məlumat tipini hesabladıq və alert () funksiyası bizə bu hesablamaların nəticəsini göstərdi. Nəticədə, bu skript bizə təyin olunmamış bir mesaj göstərməlidir.

Bir dəyişənin dəyərinə daxil olmaq

Bir dəyişənin dəyərinə daxil olmaq üçün adla müraciət etməlisiniz:

// dəyişənləri elan edin var myString; var myNumber; // dəyişənləri işə salın myString = "Salam DÜNYA!"; myNumber = 5; // dəyişənlərə müraciət edin xəbərdarlıq (myString); xəbərdarlıq (myNumber);

Kodun birinci və ikinci sətirlərində myString və myNumber dəyişənlərini yaratdıq, üçüncü və dördüncü sətirlərdə "Salam, DÜNYA!" və 5, beşinci və altıncı sətirlərdə, alert () funksiyasından istifadə edərək nəticələri salam, DÜNYA! və 5

Dəyişən bir dəyər təyin edilmiş bir identifikatordur. Dəyişənə verilən bir dəyərlə bu şəkildə işləyən bir proqramda əldə edilə bilər.

Öz -özünə, bir JavaScript dəyişənində saxlanılacaq dəyərlərin növü haqqında məlumat yoxdur. Bu o deməkdir ki, bir dəyişənə, məsələn, simli yazaraq, sonradan ona bir rəqəm yaza bilərsiniz. Belə bir əməliyyat proqramda səhv yaratmayacaq. Buna görə də JavaScript bəzən "yazılmamış" dil adlanır.

Bir dəyişəndən istifadə etməzdən əvvəl, var və ya let açar sözlərindən istifadə edərək elan edilməlidir. Bir sabitə gəldikdə, const açar sözü istifadə olunur. Bu açar sözlərdən istifadə etmədən bir dəyişən elan edə və ona dəyər təyin edə bilərsiniz, lakin bu tövsiyə edilmir.

Var açar sözü

ES2015 -dən əvvəl, var açar sözünü istifadə etmək, dəyişənləri elan etməyin yeganə yolu idi.

Var a = 0
Bu quruluşda var yazılmazsa, dəyər elan edilməmiş bir dəyişənə veriləcək. Bu əməliyyatın nəticəsi proqramın icra olunduğu rejimdən asılıdır.

Beləliklə, sözdə sərt rejim aktivdirsə, bu bir xətaya səbəb olacaq. Ciddi rejim aktiv deyilsə, dəyişən dolayı olaraq elan ediləcək və qlobal obyektə təyin ediləcək. Xüsusilə, bu, bir funksiyada bu şəkildə dolayı olaraq elan edilən bir dəyişənin funksiya işini başa vurduqdan sonra mövcud olacağı deməkdir. Adətən, funksiyalarda elan olunan dəyişənlərin öz hüdudlarından kənara çıxmadığı gözlənilir. Bu belə görünür:

NotVar () funksiyası (bNotVar = 1 // bunu etməmək daha yaxşıdır) notVar () console.log (bNotVar)
Konsol 1 alacaq, heç kim ümumiyyətlə proqramdan belə davranış gözləmir, bNotVar = 1 ifadəsi bir dəyişəni elan etmək və işə salmaq cəhdi kimi deyil, funksiyanın hüdudlarından kənarda olan bir dəyişənə daxil olmaq cəhdi kimi görünür ( bu olduqca normaldır). Nəticədə, gizli dəyişən bəyannamələr oxucunu çaşdırır və gözlənilməz proqram davranışına səbəb ola bilər. Daha sonra funksiyalar və sahələr haqqında danışacağıq, ancaq indiyə qədər ifadənin mənası dəyişən elan etmək üçün xüsusi açar sözlərdən istifadə etməyə çalışın. Bu nümunədə funksiyanın gövdəsi var bNotVar = 1 olaraq yenidən yazılırsa, yuxarıdakı kod parçasını işə salmaq cəhdi bir səhv mesajı ilə nəticələnəcək (bunu brauzer konsolunda görə bilərsiniz).

Məsələn, belə görünə bilər: Tutulmamış ReferansError: bNotVar müəyyən edilməyib. Proqramın mövcud olmayan bir dəyişənlə işləyə bilməməsi onun mənasına bağlıdır. Proqramı ilk çalıştırdığınızda belə bir səhv mesajı görmək, gözlənilmədən hərəkət edə biləcək anlaşılmaz bir kod yazmaqdan daha yaxşıdır.

Dəyişən elan edərkən ona başlanğıc və ya hər hansı bir dəyər verilmirsə, avtomatik olaraq təyin olunmamış dəyər təyin ediləcək.

Bir // tipof a === "təyin olunmamış"
Var açar sözü ilə elan edilən dəyişənlər onlara yeni dəyərlər təyin etməklə dəfələrlə yenidən elan edilə bilər (lakin bu oxucu üçün çaşqınlıq yarada bilər).

Var a = 1 var a = 2
Bir ifadədə bir neçə dəyişən elan edilə bilər:

Var a = 1, b = 2
Bir dəyişənin əhatə dairəsi, bu dəyişənin mövcud olduğu (görünən) proqram sahəsidir.

Funksiya xaricində var açar sözü ilə başladılan dəyişən qlobal obyektə təyin edilir. Qlobal bir əhatəyə malikdir və proqramın hər yerindən əldə edilə bilər. Bir dəyişən funksiyanın içərisində var açar sözündən istifadə edilərək elan olunarsa, o, yalnız bu funksiyanın daxilində görünür, bunun üçün yerli dəyişəndir.

Var dəyişən bir funksiyada elan edildikdə, adı qlobal miqyasdakı bəzi dəyişənlərin adı ilə üst -üstə düşürsə, qlobal dəyişənlə "üst -üstə düşəcək". Yəni bir funksiya daxilində belə bir dəyişənə daxil olarkən onun yerli versiyası istifadə olunacaq.

Blokların (buruq mötərizədə olan kod sahələri) yeni sahələr yaratmadığını başa düşmək vacibdir. Funksiya çağırıldıqda yeni bir sahə yaradılır. Açar söz var funksional əhatə dairəsinə malikdir, bloku əhatə etmir.

Bir dəyişən funksiya kodunda elan edilərsə, bütün funksiya kodunda görünür. Funksiya kodunun sonunda var istifadə edərək bir dəyişən elan edilsə də, kodun əvvəlində ona müraciət edə bilərsiniz, çünki JavaScript qaldırma mexanizmindən istifadə edir. Bu mexanizm dəyişən bəyannamələri "qaldırır", lakin onların başlatma əməliyyatlarını deyil. Bu qarışıqlıq mənbəyi ola bilər, buna görə də funksiyanın əvvəlində dəyişənləri elan etməyi bir qayda halına gətirin.

LetSöz açarı

Let açar sözü ES2015 -də təqdim edildi və sadəcə var -ın "blok" versiyası adlandırıla bilər. Let açar sözü ilə elan edilən dəyişənlər, elan edildikləri bloka, ifadəyə və ya ifadəyə və iç içə qoyulmuş bloklara qədər genişlənir.

"İcazə verin" sözünün özü qarışıq görünsə, bunun yerinə "icazə ver" sözünü istifadə etdiyinizi təsəvvür edə bilərsiniz. Sonra let color = "red" ifadəsi ingilis dilinə belə çevrilə bilər: "rəngi qırmızı olsun" və rus dilinə - belə: "rəngi qırmızı olsun".

Let açar sözünü istifadə edərək, var açar sözü ilə əlaqəli qeyri -müəyyənliklərdən qurtula bilərsiniz (məsələn, eyni dəyişəni iki dəfə let istifadə edərək elan edə bilməzsiniz). Bir funksiyanın xaricində icazə vermək, məsələn, döngələri başlatarkən qlobal dəyişənlər yaratmır.

Məsələn, bu kimi kod səhv salacaq:

Üçün (icazə verin i = 0; i< 5; i++) { console.log(i) } console.log(i)
Əgər döngənin işə salınması zamanı i sayacı var açar sözündən istifadə edilərək elan olunarsa, i işini başa vurduqdan sonra döngədən kənarda mövcud olacaq.

Müasir standartlara əsaslanan JS proqramları hazırlayarkən, var -dan tamamilə imtina etmək və yalnız let və const açar sözlərindən istifadə etmək olduqca mümkündür.

Const const açar sözü

Var istifadə edərək elan edilən dəyişənlər və ya açar sözlərin üzərinə yazıla bilər. Bu açar sözlər əvəzinə const istifadə olunarsa, köməyi ilə elan edilən və başlatılan sabitə yeni bir dəyər təyin edilə bilməz.

Const a = "test"
V bu nümunə a sabitinə yeni bir dəyər təyin edilə bilməz. Ancaq qeyd etmək lazımdır ki, a rəqəm kimi ibtidai bir dəyər deyil, bir obyektdirsə, const açar sözünü istifadə edərək bu obyekti dəyişikliklərdən qoruya bilməz.

Bir obyektin dəyişənə yazıldığını söylədikdə, əslində nə demək istədikləri, dəyişənin obyektə bir istinad saxlamasıdır. Bu keçid dəyişdirilə bilməz və əlaqənin aparıldığı obyektin özü dəyişdirilə bilər.

Const açar sözü obyektləri dəyişməz etmir. Sadəcə, onlara uyğun sabitlərdə yazılan istinadları dəyişikliklərdən qoruyur. Görünüşü belədir:

Const obj = () console.log (obj.a) obj.a = 1 // çalışan console.log (obj.a) // obj = 5 // səhv yaradır
Başlatma zamanı daimi objə yeni bir boş obyekt yazılır. Mövcud olmayan a xüsusiyyətinə daxil olmaq cəhdi səhv yaratmır. Konsol qeyri -müəyyən olur. Bundan sonra, obyektə yeni bir xüsusiyyət əlavə edirik və yenidən daxil olmağa çalışırıq. Bu dəfə bu əmlakın dəyəri konsola göndərilir - 1. Misalın son sətirini şərh etməsəniz, bu kodu icra etmək cəhdi bir səhvlə nəticələnəcək.

Const açar sözü, xüsusən də blok ölçüsünə çox bənzəyir.

V müasir şərait Yalnız xüsusi hallarda icazə verərək dəyərlərinin dəyişdirilməsi planlaşdırılmayan bütün varlıqları elan etmək üçün const açar sözündən istifadə etmək tamamilə məqbuldur. Niyə? Məsələ burasındadır ki, proqramları çətinləşdirməmək və səhvlərdən qaçmaq üçün ən sadə konstruksiyalardan istifadə etməyə çalışmaq daha yaxşıdır.

Məlumat növləri

JavaScript bəzən "yazılmamış" dil adlanır, amma bu belə deyil. Həqiqətən, dəyişənlərə dəyərlər yaza bilərsiniz fərqli növlər, lakin JavaScript -də məlumat növləri var. Xüsusilə, ibtidai və obyekt məlumat növlərindən bəhs edirik.

Bir dəyərin məlumat növünü təyin etmək üçün operator tipindən istifadə edə bilərsiniz. Operandın növünü göstərən bir simli qaytarır.

▍İlk məlumat növləri

JavaScript ibtidai məlumat növlərinin siyahısı:
  • nömrə (nömrə)
  • sim (sim)
  • boolean (boolean dəyər)
  • sıfır (xüsusi dəyər null)
  • müəyyən edilməmiş (xüsusi dəyər müəyyən edilməmiş)
  • simvol (xüsusi hallarda istifadə olunan, ES6 -da təqdim olunan simvol)
Burada, məlumat növlərinin adları geri qaytarılanda göstərilir. operator növü.

Bu siyahıdan ən çox istifadə olunan məlumat növlərindən danışaq.

Nömrə növü

JavaScript nömrə dəyərləri 64 bitlik ikiqat dəqiqlikli üzən nöqtə ədədləri ilə təmsil olunur.

Rəqəmsal hərflər kodda bütöv və kəsr ədədləri olaraq onlu işarədə təmsil olunur. Nömrələr yazmaq üçün başqa üsullardan istifadə edə bilərsiniz. Məsələn, rəqəmsal hərfin əvvəlində 0x prefiksi varsa, onaltılıq işarədə yazılmış bir rəqəm kimi şərh olunur. Nömrələr də eksponensial qeydlə yazıla bilər (belə rəqəmlərdə e hərfini tapa bilərsiniz).

Tam ədəd yazmaq nümunələri:

10 5354576767321 0xCC // hexadecimal sayı
İşdə kəsr ədədləri.

3.14 .1234 5.2e4 //5.2 * 10 ^ 4
Rəqəmsal hərflər (bu davranış bəzi digər ibtidai tiplər üçün xarakterikdir), onları obyekt adlandırmağa çalışdığınız zaman, əməliyyat yerinə yetirilərkən avtomatik olaraq "obyekt sarmalayıcıları" adlanan müvafiq obyektlərə çevrilir. Bu vəziyyətdə, obyektin sarğı nömrəsi haqqında danışırıq.

Məsələn, burada Google Chrome konsolunda rəqəmsal hərfi yazılan a dəyişəninə bir obyekt olaraq daxil olmaq cəhdinin necə göründüyü.

Nömrə Obyektini Sarma İpucu

Məsələn, Sayı tipli bir obyektin toString () metodundan istifadə edirsinizsə, bu ədədin simli təsvirini qaytaracaq. Müvafiq əmr, brauzer konsolunda (və adi kodda) belə icra oluna bilər:

A. toString ()
Metod adından sonra ikiqat mötərizəyə diqqət yetirin. Əgər təchiz edilmədilərsə, sistem bir səhv yaratmayacaq, ancaq gözlənilən çıxış əvəzinə konsol 5 rəqəminin simli təsvirinə bənzəməyən bir şey göstərəcək.

Qlobal Nömrə obyekti köməyi ilə yeni nömrələr yaradan bir konstruktor olaraq istifadə edilə bilər (bu formada demək olar ki, heç vaxt istifadə edilməsə də), nümunələrini yaratmadan müstəqil bir varlıq olaraq da istifadə edilə bilər (yəni bəzi rəqəmlər kömək). Məsələn, onun Number.MAX_VALUE xassəsi JavaScript -də təmsil olunan maksimum ədədi dəyəri ehtiva edir.

String növü

String dəyərləri simvol ardıcıllığıdır. Bu cür dəyərlər tək və ya ikiqat dırnaq işarələri ilə yazılmış simli hərflər kimi göstərilir.

"Bir simli" "Başqa bir simli"
String dəyərləri arxa xətt işarəsindən istifadə edərək bir neçə hissəyə bölünə bilər.

"A \ simli"
String, simli konsolda çap edildikdə şərh olunan sözdə qaçış ardıcıllıqlarını ehtiva edə bilər. Məsələn, \ n ardıcıllığı bir xətt feed xarakteri deməkdir. Arxa cizgi işarəsi, dırnaq işarələrinə əlavə edilmiş sətirlərə tırnak işarələri əlavə etmək üçün də istifadə edilə bilər. Sitat xarakterindən \ ilə qaçmaq, sistemin ona xüsusi bir xarakter kimi baxmamasına səbəb olur.

"Mən bir geliştiriciyəm"
Stringlər + operatorundan istifadə edərək birləşdirilə bilər.

"A" + "simli"

Şablon hərfləri

ES2015, şablon hərfləri və ya şablon sətirləri adlandırdı. Onlar backticks (`) ilə bağlanmış və bəzi maraqlı xüsusiyyətlərə malik simlərdir.

'simli'
Məsələn, JavaScript ifadələrinin qiymətləndirilməsinin nəticəsi olan şablon dəyərlərindəki bəzi dəyərləri əvəz edə bilərsiniz.

$ ilə bir şey (bir şey) "$ ilə bir simli (bir şey + bir şeydən başqa)" $ ilə bir simli (obj.something ()) "
Backticks istifadə etmək çox sətirli simli hərflərin yazılmasını asanlaşdırır:

$ (bir şey) olan bir simli '

Boolean növü

JavaScript -də bir cüt var ayrılmış sözlər boolean dəyərlərlə işləyərkən doğru və yanlışdır. ==, === kimi müqayisə əməliyyatları< , >, doğru və ya yalanı qaytarın.

Mantıksız ifadələr, proqram axınının idarə olunmasına kömək etmək üçün "and while" kimi quruluşlarda istifadə olunur.

Qeyd etmək lazımdır ki, doğru və ya yanlış bir dəyər gözlənildikdə, dil tərəfindən avtomatik olaraq doğru (həqiqət) və ya yalan (saxta) olaraq şərh edilən digər dəyərlərdən istifadə edə bilərsiniz.

Xüsusilə aşağıdakılar yanlış dəyərlərdir:

0 -0 NaN təyin olunmamış null "" // boş sətir
Bütün digər dəyərlər doğrudur.

Boş tip

JavaScript -in null xüsusi bir dəyəri var və bu heç bir dəyər olmadığını göstərir. Oxşar mənalar digər dillərdə də istifadə olunur.

Müəyyən edilməmiş növ

Müəyyən bir dəyişənə yazılan qeyri -müəyyən dəyər, bu dəyişənin başlanmadığını və bunun üçün heç bir dəyər olmadığını göstərir.

Bu dəyər, geri dönmə açar sözünü istifadə edərək açıq şəkildə geri dönməyən funksiyalardan avtomatik olaraq geri qaytarılır. Funksiya çağırıldığı zaman göstərilməyən bəzi parametrləri alırsa, bu da təyin olunmamış olaraq təyin olunur.

Müəyyən edilməmiş bir dəyəri yoxlamaq üçün aşağıdakı quruluşdan istifadə edə bilərsiniz.

Dəyişən növü === "müəyyən edilməmiş"

▍ Obyektlər

Bütün primitiv olmayan dəyərlər obyekt tipindədir. Söhbət funksiyalardan, seriallardan, "obyektlər" dediyimiz şeylərdən və bir çox digər varlıqlardan gedir. Bu məlumat növlərinin hamısı obyekt tipinə əsaslanır və bir çox cəhətdən fərqlənsələr də, ortaq cəhətləri də çoxdur.

İfadələri

İfadələr, yerinə yetirilən hesablamalara əsasən, müəyyən bir dəyərə görə işlənə və əldə edilə bilən kod parçalarıdır. JavaScript -də bir neçə ifadə kateqoriyası var.

Arifmetik ifadələr

Rəqəmləri qiymətləndirən ifadələr bu kateqoriyaya aiddir.

1/2 i ++ i - = 2 i * 2

String ifadələri

Bu cür ifadələrin qiymətləndirilməsinin nəticəsi simlərdir.

"A" + "simli" "A" + = "simli"

Əsas ifadələr

Ədəbiyyat, sabitlər, identifikator istinadları bu kateqoriyaya aiddir.

2 0.02 "bir şey" doğru yalan bu // icra konteksti, cari obyektə istinad qeyri -müəyyəndir i // burada i dəyişən və ya sabitdir
Bura bəzi JavaScript açar sözlər və konstruksiyalar da daxildir.

Funksiya sinif funksiyası * // verim generatoru // məhsuldarlıq generatorunu durdurmaq / davam etdirmək əmri * // başqa bir iteratora və ya generatorun asinxron funksiyasına həvalə etmək * // asinxron funksional ifadə gözləyir // asinxron funksiyanın icrasını gözləmək / model / i // Müntəzəm ifadə() // qruplaşdırma

Array və Obyektin Başlanğıc İfadələri

// array literal () // obyekt hərfi (a: 1, b: 2) (a: (b: 1))

Boolean ifadələr

V məntiqi ifadələr Mantıksal operatorlar istifadə olunur, hesablamalarının nəticəsi Boolean dəyərlərdir.

A && a || b! a

Mülkiyyətə giriş ifadələri

Bu ifadələr obyektlərin xüsusiyyətlərinə və metodlarına daxil olmağa imkan verir.

Object.property // obyekt obyekt obyektinin xüsusiyyətinə (və ya metoduna) daxil olmaq ["əmlak"]

Obyekt Yaradılması İfadələri

yeni obyekt () yeni bir (1) yeni MyRectangle ("ad", 2, (a: 4))

Funksiya bəyannamələri

function () () funksiyası (a, b) (a * b) (a, b) => a * b a => a * 2 () => (qayıt 2)

Çağırış ifadələri

Bu cür ifadələr obyektlərin funksiyalarını və ya metodlarını çağırmaq üçün istifadə olunur.

A.x (2) window.resize ()

Obyektlərlə işləmək

Yuxarıda, artıq obyekt obyektləri ilə tanış olduq, onların metodlarını çağırmaq, xüsusiyyətlərinə daxil olmaq haqqında danışdıq. Burada obyektlər haqqında daha ətraflı danışacağıq, xüsusən prototipik miras mexanizminə və sinif açar sözünün istifadəsinə baxacağıq.

▍Prototipik miras

JavaScript arasında fərqlənir müasir dillər prototip miras dəstəyi ilə proqramlaşdırma. Əksər obyekt yönümlü dillər sinifə əsaslanan miras modelindən istifadə edir.

Hər bir JavaScript obyektinin prototipi olan başqa bir obyektə işarə edən xüsusi bir xüsusiyyəti (__proto__) vardır. Obyekt prototipin xüsusiyyətlərini və metodlarını miras alır.

Tutaq ki, bir obyektin hərfi ilə yaradılmış bir obyektimiz var.

Davamlı maşın = ()
Və ya Obyekt qurucusundan istifadə edərək bir obyekt yaratdıq.

Sabit avtomobil = yeni obyekt ()
Hər iki halda da avtomobil obyektinin prototipi Object.prototype olacaq.

Bir obyekt olaraq da bir sıra yaratsanız, onun prototipi Array.prototype obyekti olacaq.

Const siyahısı = // ya da const siyahısı = yeni Array ()
Bunu aşağıdakı kimi yoxlaya bilərsiniz.

Avtomobil .__ proto__ == Object.prototype // əsl avtomobil .__ proto__ == yeni Obyekt () .__ proto__ // doğru siyahı .__ proto__ == Object.prototype // yalnış siyahı .__ proto__ == Array.prototip / / doğru siyahı .__ proto__ == yeni Array () .__ proto__ // doğru
Burada __proto__ xüsusiyyətindən istifadə etdik, geliştiricinin əlində olması lazım deyil, ancaq ümumiyyətlə ona müraciət edə bilərsiniz. Qeyd etmək lazımdır ki, bir obyektin prototipini əldə etməyin daha etibarlı yolu qlobal Obyektin getPrototypeOf () metodundan istifadə etməkdir.

Object.getPrototypeOf (yeni Obyekt ())
Bir prototipin bütün xüsusiyyətləri və üsulları bu prototipə sahib olan bir obyekt üçün mövcuddur. Məsələn, onların siyahısı bir sıra üçün necə görünür.


Array ipucu

Bütün obyektlər üçün əsas prototip Object.prototype -dır.

Array.prototip .__ proto__ == Object.prototype
Object.prototype prototipi yoxdur.

Yuxarıda gördüklərimiz prototip zəncirinin bir nümunəsidir.

Bir obyektin xüsusiyyətinə və ya metoduna daxil olmağa çalışdığınız zaman, əgər obyektin özündə belə bir xüsusiyyət və ya metod yoxdursa, onun prototipində, sonra prototipin prototipində və s. və ya prototip zənciri bitməyincə.

Yeni operatordan istifadə edərək obyekt yaratmaqla yanaşı, obyekt tipləri və ya massiv yazı tiplərindən istifadə etməklə yanaşı, Object.create () metodundan istifadə edərək bir obyekt hazırlaya bilərsiniz. Bu üsula verilən ilk arqument, yaratdığı obyektin prototipi olacaq bir obyektdir.

Const avtomobil = Object.create (Object.prototype)
Bir obyektin başqa bir obyektin prototip zəncirinin bir hissəsi olub -olmadığını isPrototypeOf () metodundan istifadə edərək yoxlaya bilərsiniz.

Const siyahısı = Array.prototype.isPrototypeOf (siyahı)

Konstruktor funksiyaları

Yuxarıda, dildə artıq mövcud olan konstruktor funksiyalarından istifadə edərək yeni obyektlər yaratdıq (onlara zəng edərkən yeni açar söz istifadə olunur). Belə funksiyaları özünüz yarada bilərsiniz. Bir nümunəyə baxaq.

Fonksiyon Person (ad) (this.name = ad) Person.prototype.hello = funksiya () (console.log (this.name)) let person = new Person ("Flavio") person.hello () console.log ( Person.prototype.isPrototypeOf (şəxs))
Burada bir konstruktor funksiyası yaradırıq. Çağırdığınız zaman, konstruktorun gövdəsindəki bu açar sözlə işarə edilən yeni bir obyekt yaradılır. Bu obyektə bir ad xassəsi əlavə edirik və konstruktora verilənləri yazırıq. Bu obyekt avtomatik olaraq konstruktordan qaytarılır. Bir konstruktor funksiyasından istifadə edərək, ad xüsusiyyətlərində yaradıldıqda konstruktora verilənləri ehtiva edən bir çox obyekt yarada bilərsiniz.

Konstruktoru yaratdıqdan sonra prototipinə bu funksiyadan istifadə edərək yaradılan obyektin ad xüsusiyyətinin dəyərini konsola yazdıracaq bir funksiya əlavə edirik. Bu qurucudan istifadə edərək yaradılan bütün obyektlər eyni prototipə sahib olacaq və buna görə də eyni hello () funksiyasından istifadə edəcəklər. Başqa bir Person tipli obyekt yaratmaq və onun salam () funksiyasını artıq nümunədə olan obyektin funksiyası ilə müqayisə etməklə yoxlamaq asandır (bu halda funksiyanın adı mötərizəsiz yazılır).

▍ Dərslər

ES6 standartında JavaScript "sinif" olaraq tanınmağa başladı.

Bundan əvvəl, JavaScript yalnız yuxarıda təsvir edilən prototipik miras mexanizmindən istifadə edə bilərdi. Bu mexanizm JS -ə başqa dillərdən gələn proqramçılar üçün qeyri -adi görünürdü. Buna görə də, əslində prototipik miras mexanizmi üçün "sintaktik şəkər" olan siniflər ortaya çıxdı. Yəni həm ənənəvi şəkildə yaradılan obyektlərin, həm də siniflərdən istifadə edərək yaradılan obyektlərin prototipləri var.

Sinif bəyannaməsi

Sinif bəyannaməsi belə görünür.

Sinif Şəxsi (konstruktor (ad) (this.name = ad) salam () ("Salam, mənəm" + bu.adım + ".")))
Sinif, yeni ClassIdentifier () quruluşundan istifadə edərək yeni obyektlər yaratmaq üçün istifadə edilə bilən bir identifikatora malikdir.

Yeni bir obyekt yaratarkən konstruktor metodu çağırılır, parametrlər ona ötürülür.

Metodlar sinifdə elan edilə bilər. Bizim vəziyyətimizdə, hello (), sinifdən yaradılan bütün obyektlər tərəfindən çağırıla bilən bir üsuldur. Person sinifindən istifadə edərək yeni bir obyekt yaratmaq kimi görünür.

Const flavio = yeni şəxs ("Flavio") flavio.hello ()

Sinif əsaslı miras

Dərslər digər sinifləri genişləndirə bilər. Bu cür siniflərdən yaradılan obyektlər həm orijinal sinif metodlarını, həm də genişləndirilmiş sinifdə müəyyən edilmiş metodları miras alacaq.

Başqa bir sinif (bu sinifdən miras qalan) uzanan bir sinifin adı ana siniflə eyni olan bir metodu varsa, bu metod orijinaldan üstündür.

Sinif Proqramçısı Personu uzadır (salam () (super.hello () + "Mən proqramçıyam.")) Const flavio = new Programmer ("Flavio") flavio.hello ()
Yuxarıdakı nümunədəki hello () metoduna zəng etmək, Salam, mən Flavio simasını qaytaracaq. Mən proqramçıyam.

Siniflər dəyişənlərin (xüsusiyyətlərin) mövcudluğunu təmin etmir; siniflərdən istifadə edərək yaradılan obyektlərin xüsusiyyətləri konstruktorda konfiqurasiya edilməlidir.

Bir sinif daxilində super açar sözünü istifadə edərək ana sinfinə müraciət edə bilərsiniz.

Statik üsullar

Bir sinifdə təsvir olunan metodlar, bu sinif əsasında yaradılan obyektlərə istinad etməklə çağırıla bilər, ancaq sinifin özünə deyil. Statik metodlar birbaşa sinfə istinad edərək çağırıla bilər.

Şəxsi üsullar

JavaScript-in özəl (özəl, özəl) üsulları elan etməyə imkan verən daxili mexanizmi yoxdur. Bu məhdudiyyət, məsələn, bağlanmalardan istifadə etməklə aradan qaldırıla bilər.

Alıcılar və tənzimləyicilər

Bir sinifdə, almaq və ya qurmaq açar sözlərindən əvvəl metodları təsvir edə bilərsiniz. Bu, bir sinifdən yaradılan obyektlərin xüsusiyyətlərinə girişi idarə etmək üçün istifadə olunan sözdə alıcılar və təyinatçılar yaratmağa imkan verir. Yalançı bir mülkün dəyərini oxumağa cəhd edildikdə alıcı, yeni bir dəyər yazılmağa çalışıldıqda isə çağırıcı çağırılır.

Sinif Şəxsi (konstruktor (ad) (this.userName = ad) ad təyin edin (dəyər) (this.userName = dəyər) ad alın () (this.userName qaytarın))

Nəticələr

Bu yazıda JavaScript -də dəyişənlər, məlumat növləri, ifadələr və obyektlərlə işləməkdən bəhs etdik. Funksiyalar növbəti məqaləmizin mövzusu olacaq.

Əziz Oxucular! Uzun müddətdir JS -də yazırsınızsa, zəhmət olmasa sinif açar sözünün dildə görünməsinə münasibətinizi bildirin.

Ümumilikdə JavaScript -də 6 var məlumat növləri:
- nömrə nömrəsi,
- String simli,
- Boolean məlumat növü boolean,
- Müəyyən edilməmiş dəyərin olmaması
- Boşluq, heç bir şey boş,
- Obyekt obyekti.

Bu 6 məlumat növü sadə məlumat növləri və kompozit (obyekt) məlumat növləri olmaqla iki növə bölünür.

Sadə (ibtidai) məlumat növləri: nömrə, simli, boolean, təyin olunmamış, sıfır.
Kompozit (obyekt) məlumat növləri: obyekt

Kompozit məlumat növləri bunlardır: obyekt, funksiya, massiv (məqalənin sonuna baxın).

Hər bir məlumat növünə baxmadan əvvəl, əvvəlcə operatorun növü ilə tanış olaq. Bu operator, bir dəyişənin hansı növ məlumatlara malik olduğunu öyrənməyə imkan verir, belə edilir:

Var dəyişən adı; dəyişənAdı = dəyər; xəbərdarlıq (VariableName növü);

Məlumat növü: nömrə

Nömrə- məlumat növü nömrəsi. Nömrələr həm tam ədədlər, həm də üzən nöqtə ola bilər (kəsrli, həqiqi, həqiqi ədədlər).

Var myNumber = 5; var myNumber2 = 5.5;

JavaScript -də üzən nöqtə nömrələri vergül deyil, nöqtələrdən istifadə edir 🙂

Xəbərdarlıq (myNumber növü); xəbərdarlıq (myNumber2 növü);

Hər iki halda da skript bizə mesaj nömrəsini verəcəkdir.

Məlumat növü: simli

Simli- məlumat tipli sətir. Bir dəyişənin dəyərini bir sətirə çevirmək üçün onu dırnaqlara əlavə etməlisiniz: ikiqat "simli" və ya tək "simli". Nömrəni tirnoqlarla əlavə etsəniz, onun məlumat növü rəqəmdən sətirə dəyişəcək:

Var myString = "Salam, mən JavaScript simliyəm"; var myString2 = "5";

Typeof operatorunu, dəyişənlərimizin məlumat növünü istifadə edərək yoxlayırıq:

Xəbərdarlıq (myString növü); xəbərdarlıq (myString2 növü);

Hər iki halda da skript bizə mesaj simini verəcək.

Məlumat növü: boolean

Boolean- Boolean məlumat növü, iki dəyərdən yalnız birinə malik ola bilər: doğru (doğru) və ya yalan (yanlış). Dəyərlər doğrudur və ya yalan ümumiyyətlə müqayisə və ya məntiqi əməliyyatlarda görünür.

Var myBoolean = doğru; var myBoolean2 = yalan;

Typeof operatorunu, dəyişənlərimizin məlumat növünü istifadə edərək yoxlayırıq:

Xəbərdarlıq (myBoolean növü); xəbərdarlıq (myBoolean2 növü);

Hər iki halda da skript bizə boolean bir mesaj verəcək.

Bir Boolean məlumat tipini tırnak işarəsi ilə əlavə etsəniz, onun məlumat növü boolean -dan simliə dəyişəcək.

Məlumat növü: təyin olunmamışdır

Müəyyən edilməmiş- yalnız bir təyin olunmayan dəyəri olan bir məlumat növü. Bu məlumat növü bir dəyişən elan edildikdə, lakin işə salınmadıqda görünür, yəni. bir dəyişənin (bir obyektin və ya massiv elementinin xassəsi) heç bir dəyəri olmadıqda.

// Dəyişən elan edin, lakin ona dəyər təyin etməyin var myUndefined; // Dəyişən xəbərdarlığımızın məlumat tipini (operator növü ilə) yoxlayın (myUndefined typeof);

Funksiya xəbərdarlıq () bizə qeyri -müəyyən bir mesaj verəcək.

Bir dəyişənə təyin olunmayan bir dəyər verilərsə, onun məlumat növü də təyin olunmayacaq.

Var myUndefined2 = təyin olunmamış; xəbərdarlıq (myUndefined2 növü);

Müəyyən edilməmiş dəyəri tırnak işarələri ilə əhatə etsəniz, onun məlumat növü təyin olunmamışdan simli olaraq dəyişəcək.

Məlumat növü: obyekt

Obyekt- məlumat tipli obyekt.

Var myObject; myObject = (svoistvo: "znachenie", svoistvo2: "znachenie2",);

Typeof operatorunu, obyektimizin məlumat növünü istifadə edərək yoxlayırıq:

Xəbərdarlıq (myObject növü);

Skript bizə mesaj obyekti verəcək. Həmçinin typeof operatoru massivlər və funksiyalar üçün bir obyekt göstərəcək (aşağıya baxın).

Məlumat növü: null

Sıfır Boşluğu (heç bir şeyi) ifadə edən xüsusi bir məlumat növüdür. Null xüsusi bir boş obyektdir. Məsələn, funksiyanı istifadə edərkən ləğv et düyməsini basdıqda null görünə bilər promt ().

Var myNull = null; xəbərdarlıq (myNull növü);

Bu skript, etiraz etmək üçün bir mesaj göstərəcək, bunun niyə baş verdiyini aşağıda oxuyun.

Null -u tırnak işarəsi ilə əlavə etsəniz, onun məlumat növü sıfırdan simliə dəyişəcək.

Operator növü ilə işləmək üçün aydınlıq

Burada sizə operator tipində olan bəzi çatışmazlıqlar haqqında məlumat verəcəyəm, məsələn, null və funksiyalarla işləyərkən, yeni başlayanları çaşdıran səhv bir məlumat növü yaradır. Aşağıda necə işlədiyini göstərən kiçik bir cədvəl tərtib etdim

Bu təlimatda çox vacib bir anlayışı - JavaScript məlumat növlərini təqdim edəcəyik. Bu konsepsiyanı diqqətlə nəzərdən keçirməyi məsləhət görürük - əvvəldən başa düşmürsənsə, sonradan tez -tez yaratdığın proqramın qəribə davranışı ilə məşğul olursan.

Dinamik yazma

Bu müddətdə kompüter proqramları hər biri bir proqramlaşdırma dilində işlənə bilən və müəyyən bir məlumat tipinə aid olan müxtəlif dəyərləri manipulyasiya edir.

JavaScript -də məlumat növləri iki kateqoriyaya bölünə bilər: sadə (ibtidai də deyilir) və kompozit (istinad və ya obyekt olaraq da adlandırılır) növlər.

JavaScript, proqramın icrası mərhələsində, necə deyərlər, "anında" məlumat növlərini təyin etməyə, təhlil etməyə və tərtib etməyə imkan verən zəif yazılmış və ya dinamik bir proqramlaşdırma dilidir. Bu o deməkdir ki, dəyişənin növünü əvvəlcədən təyin etməyə ehtiyac yoxdur. Proqramın icrası zamanı növ avtomatik olaraq təyin olunacaq.
Beləliklə, proqramın müxtəlif hissələrində eyni dəyişən müxtəlif növ dəyərlər götürə bilər:

Məlumat növləri

ECMAScript® standartı aşağıdakı məlumat növlərini təyin edir:

  • Sadə(ibtidai də deyilir) növləri:
    • məntiqi (İngilis dili Boolean) - bəzən doğru (doğru) və yalan (yanlış) adlandırılan iki mümkün dəyəri götürə bilər;
    • null (İngilis Null) - null dəyər, ümumiyyətlə məqsədsiz olaraq mövcud olmayan və ya etibarsız bir obyektə və ya ünvana işarə edən bir əlaqəni təmsil edir;
    • qeyri -müəyyən - müəyyən edilməmiş bir dəyərlə əvvəlcədən təyin edilmiş qlobal dəyişəni bildirir;
    • sayısal (ing. Number)-64 bitlik ikiqat dəqiqlikli üzən nöqtə nömrəsi formatında rəqəmsal məlumat növü;
    • string (English String) - mətni təmsil etmək üçün istifadə olunan simvollar ardıcıllığıdır;
    • simvol (ing. Symbol) - nümunələri bənzərsiz və dəyişməz olan məlumat növü. (ECMAScript 6 -da yeni).
  • Obyekt(İngilis Obyekti), adətən bir obyektin xassələri (xassələri) adlandırılan adlanan dəyərlər toplusudur.

İbtidai və kompozit növlər arasındakı fərq

Hər bir məlumat növünə baxmadan əvvəl, əvvəlcə operatorun növü ilə tanış olaq. Typeof operatoru, dəyişənin məlumat növünü təsvir edən bir sətir qaytarır.
Aşağıdakı nümunə ilə necə işlədiyini göstərək:

Yuxarıdakı nümunədəki skript dəyişənləri elan edir, onları işə salır (dəyərlər təyin edir) və sonra hər bir dəyişənin növünü bildirir.

İbtidai və kompozit məlumat növləri arasındakı fərq, dəyərlərini kopyalayarkən ortaya çıxır.

Dəyişənə sadə tipli bir dəyər təyin edildikdə, dəyərin özü (məsələn, ədəd) dəyişənə yazılır. Biz zaman sadə tipli bir dəyişənin təyin edilməsi başqasına, o dəyəri kopyalayır... Nəticədə, hər bir dəyişən olacaq onun mənası və dəyişənlərdən birində dəyişiklik heç bir şəkildə təsir etmir başqa bir dəyişənin dəyəri haqqında:

Bir dəyişən olduqda kompozitin dəyərini təyin edin(istinad) növü, sonra dəyişən yazılır keçid dəyərinə görə ( obyekt istinad). Başqa bir dəyişənə bir dəyişən təyin etdikdə (dəyərində kompozit dəyərə istinad olan) linki kopyalayın birləşmiş dəyərə. Nəticədə hər iki dəyişən eyni kompozit dəyərə aiddir və dəyişənlərdən birinin dəyərindəki dəyişikliklər təsir edəcək başqa bir dəyişəndə:

İbtidai növlər

JavaScript -də obyektlərdən başqa bütün məlumat növləri dəyişməzdir. Bu o deməkdir ki, onların dəyərləri dəyişdirilə bilməz, yalnız yeni, fərqli bir dəyərlə yazılır. Məsələn, simlər xarakterə görə düzəldilə bilməz - yalnız tamamilə yenidən yazıla bilər. Bu tip dəyərlərə "primitiv" deyilir.

Bir proqramın işləyə biləcəyi ən sadə məlumatlara hərflər deyilir. Ədəbiyyat, JavaScript -də dəyərləri təmsil etmək üçün istifadə olunan ədədlər və ya sətirlərdir. Verilən məlumatlar çox müxtəlif ola bilər və buna görə də dəyərlərdir fərqli növlər... JavaScript -də ən sadə məlumat növlərinə əsas məlumat növləri deyilir: ədədlər, sətirlər və boolean. Hamısı "ibtidai" dir.

Boolean (məntiqi) növü "boolean"

Boole dəyərləri (ixtiraçısının adını daşıyan - Boole) iki dəyərdən yalnız birinə malik ola bilər: doğru (doğru) və ya yalan (yanlış). Doğru və ya yanlış dəyərlər ümumiyyətlə müqayisə və ya məntiqi əməliyyatlarda görünür.

Aşağıdakı proqram bir boolean dəyişən yaradır və sonra if / else ifadəsini istifadə edərək dəyərini yoxlayır:

İstənilən ifadə müqayisə ifadəsi kimi istifadə edilə bilər. 0, sıfır, təyin olunmamış və ya boş bir sətir qaytaran hər hansı bir ifadə yanlış olaraq şərh olunur. Başqa bir dəyəri təyin edən bir ifadə doğru olaraq şərh olunur.

Qeyd: Mantıksal dəyərlər yazılarkən, bunlar dırnaq işarəsinə daxil edilmir: var myVar = true;
Eyni zamanda var myVar = "true" elan edilməsi bir simli dəyişən yaradır.

Nömrə məlumat növü

JavaScript -də bir tam ədəd və üzən nöqtə sayı arasında heç bir fərq yoxdur - əslində JavaScript bütün ədədləri üzən nöqtə dəyəri olaraq təmsil edir.

JavaScript, IEEE-754 standartının təyin etdiyi rəqəmləri təmsil etmək üçün 64 bitlik bir formatdan istifadə edir. Bu format ± 1.7976931348623157 × 10.308 ilə ± 5 × 10 -324 aralığında olan rəqəmləri təmsil edə bilir.

Birbaşa proqram kodunda olan bir rəqəmə hərfi deyilir. Ondalık tam ədədlərdən başqa, JavaScript onaltılıq dəyərləri tanıyır.
Onaltılıq formatdakı nömrələr, 0 -dan 9 -a qədər hər hansı bir sıra ardıcıllığını və "0x" simvollarının ardıcıllığı ilə başlayan a -dan f -ə qədər hərfləri daxil edə bilər.

Var a = 255; var b = 0xFF; // Onaltılıq sistemdə 255 nömrəsi

Bundan əlavə, JavaScript xüsusi rəqəm dəyərlərini ehtiva edir:

  • NaN (rəqəm və ya hesablama xətası deyil). Stringlər və ya müəyyən edilməmiş dəyərlər kimi etibarsız məlumatlar üzərində edilən səhv riyazi əməliyyatın nəticəsidir.
  • Sonsuzluq (pozitiv sonsuzluq). Müsbət ədəd JavaScript -də təmsil olunmayacaq qədər çox olduqda istifadə olunur.
  • -Sonsuzluq (mənfi sonsuzluq). Mənfi ədəd JavaScript -də təmsil olunmayacaq qədər çox olduqda istifadə olunur.
  • ± 0 (müsbət və mənfi 0). JavaScript müsbət və mənfi sıfırları ayırır.

String məlumat növü

Bir simli növü, hər biri Unicode simvolunu (hərflər, rəqəmlər, durğu işarələri, Xüsusi simvollar və boşluqlar). Satırlar boş ola bilər və ya bir və ya daha çox simvoldan ibarət ola bilər. Stringlər ikiqat (") və ya tək (") tirnoqlardan istifadə etməklə yaradılır. Bir cüt dırnaq işarəsi ilə ayrılmış sətirdə ikiqat sitatlardan istifadə edə bilərsiniz və əksinə - tək dırnaqlar bir cüt ikiqat işarəyə əlavə edilmiş sətirdə istifadə edilə bilər:

JavaScript -də ikiqat və tək dırnaqlar arasında heç bir fərq yoxdur, ancaq sətrin əvvəlində və sonundakı sitatlar fərqlənməməlidir. Məsələn, belə bir ifadə sintaksis xətası yaradacaq:

var firstName = "Maksimum"; // sintaksis xətası - fərqli sitatlar

Qeyd: JavaScript -də C, C ++ və Java -da char kimi tək bir xarakter üçün xüsusi məlumat növü yoxdur. Tək simvol tək uzunluqlu simli olaraq təqdim olunur.

Sıfır məlumat növü

Null növü null olan xüsusi dəyərdən ibarətdir.

Null açar söz funksiya və ya dəyişən adı kimi istifadə edilə bilməz. Dəyər boşluğu "boş" bir obyektə istinaddır və xüsusi bir məqsəd daşıyır - adətən daha sonra dəyər veriləcək bir dəyişəni işə salmaq üçün istifadə olunur.

Null üçün typeof operatoru, nullun xüsusi "boş" bir obyekt olduğunu göstərən "obyekt" sətrini qaytarır.

Müəyyən edilməmiş məlumat növü

Müəyyən edilməmiş bir növ (təyin olunmamış), müəyyən olmayan yeganə xüsusi dəyəri olan öz növünü təşkil edir. Var ifadəsi ilə elan edilən, lakin başlanğıc olmayan bir dəyişənin mənası budur:

Müəyyən edilməmiş dəyər, heç vaxt dəyər verilməmiş bir dəyişənə, eləcə də mövcud olmayan bir obyekt xüsusiyyətinə və ya sıra elementinə istinad edildikdə qaytarılır.

Qeyd edilməlidir ki, müəyyən edilməmiş bir dəyəri olan bir dəyişən, ümumiyyətlə təyin olunmayan bir dəyişəndən fərqlənir:

Bu nümunədə, alert () metodu, təyin olunmayan dəyişkən yaşın dəyərini verir. İkinci halda, elan edilməmiş dəyişən avtomobil alert () metoduna ötürülür və nəticədə xəta baş verir.

Aşağıdakı nümunə yeni başlayan proqramçıları bir az çaşdıra bilər. həm başlanğıcsız, həm də elan edilməmiş dəyişənlər üçün operator növü təyin olunmamış qaytarır:

Yuxarıdakı nümunədə, yaş dəyişənliyi elan edilir, lakin ona heç bir şey yazılmır, buna görə də dəyəri sadəcə müəyyən edilməmişdir. Dəyişən avtomobil elan edilmir - əslində belə deyil. Bununla birlikdə, hər iki halda da typeof qaytarılmır. Təbii ki, bunun bir mənası var, çünki bu dəyişənlərdən heç biri ilə heç bir əməliyyat aparmaq mümkün deyil, baxmayaraq ki, texniki cəhətdən tamamilə fərqlidirlər.

Qeyd: Həmişə elan edilmiş bir dəyişəni işə salmağınız məsləhətdir. Bu vəziyyətdə, dəyişənin elan edilmədiyi üçün deyil, başlatılmadığı üçün deyil, typeof operatorunun təyin olunmadığını qaytaracağını biləcəksiniz.

Müəyyən edilməmiş dəyər null dəyərindən alınır, buna görə ECMA-262-də == ekvivalentlik operatoru onları bərabər hesab edir:

Sıfır və qeyri -müəyyən əlaqəli olsa da, fərqli yollarla istifadə olunur. Bir dəyişəni təyin olunmamış olaraq təyin etməməlisiniz, ancaq null tələb olunmur. Lazımi obyekt olmadıqda, null istifadə edilməlidir. Bu, null dəyərinin boş bir obyektə işarə olaraq daxil edildiyini göstərir və onun təyin olunmamışdan fərqini vurğulayır.

Proqramda null və təyin olunmamışları ayırd etmək üçün identifikasiya operatoru === istifadə edilə bilər:

Məlumat növü Simvolu

ECMAScript 6 versiyasından bəri bir simvol JavaScript üçün yenidir. Simvol unikal identifikatorlar yaratmaq üçün istifadə olunan unikal, dəyişməz, ibtidai dəyərdir.

Bir simvol yaratmaq üçün Symbol funksiyasına zəng etməlisiniz:

var mySymbol = Symbol ();

Bir simvolu təyin etmək üçün typeof operatorundan istifadə edə bilərsiniz, əgər dəyər simvol olarsa simli simvol qaytarılacaq:

Simvol funksiyasının simvolu təsvir etmək üçün istifadə olunan əlavə bir parametri var:

Mülkiyyət adı bir sətirdir, buna görə obyektləri simləri dəyərlərlə əlaqələndirmək olar. Birlikdə bu məlumatlar əsas dəyər cütlərini təşkil edir.

JavaScript -də obyektlər iki sintaksisdən biri ilə yaradıla bilər:

1.var obj = (); // hərfi bir obyekt istifadə edərək 2.var obj = new Object (); // konstruktor adlanan metoddan istifadə etməklə

Bir obyektin hərfi istifadə edərək bir obyektin yaradılması adi bir dəyişənin təyin edilməsindən başlayır. Bu ifadənin sağ tərəfində, əyri mötərizədə olan vergüllə ayrılmış bir siyahı olan bir obyektin hərfi yazırsınız () "ad-dəyər" qıvrım mötərizədə. Mülkiyyət adı və dəyəri iki nöqtə ilə ayrılır:

var cat = ("ayaqları": 4, "adı": "Murzik", "rəng": "Qızılbaş")

Obyekt yaratmağın ikinci yolu Object () konstruktorundan istifadə etməkdir. Bu vəziyyətdə əvvəlcə yeni Object () ifadəsi istifadə olunur, sonra ortaya çıxan obyektin xassələri təyin olunur və işə salınır:

  • Başqa bir dəyişənə bir dəyişən təyin etdikdə (dəyərində kompozit dəyərə istinad var), o zaman kompozit dəyərə istinad kopyalanır. Nəticədə hər iki dəyişən eyni kompozit dəyərə istinad edir və dəyişənlərdən birinin dəyərindəki dəyişikliklər digər dəyişənə təsir edəcək.
  • 0, sıfır, təyin olunmamış və ya boş bir sətir qaytaran hər hansı bir ifadə yanlış olaraq şərh olunur.
  • Stringlər ikiqat (") və ya tək (") tirnoqlardan istifadə etməklə yaradılır. Bir cüt dırnaq işarəsi ilə ayrılmış bir sətirdə ikiqat quotes istifadə edə bilərsiniz və əksinə - tək tirnələr bir cüt ikiqat tirnoq içərisində olan bir sətirdə istifadə edilə bilər.
  • Dəyər boşluğu "boş" bir obyektə istinaddır və xüsusi bir məqsəd daşıyır - adətən daha sonra dəyər veriləcək bir dəyişəni işə salmaq üçün istifadə olunur.
  • Dəyər (təyin olunmamış) var ifadəsi ilə elan edilən, lakin başlanğıc olmayan bir dəyişənə malikdir.
  • JavaScript -də obyektlər iki yoldan biri ilə yaradıla bilər:
    • hərfi bir obyekt istifadə edərək
    • konstruktor adlanan metoddan istifadə edir
  • Bir obyektdə hər birinin adı və dəyəri olan nizamsız xüsusiyyətlər toplusu var. İstənilən vaxt bir obyektə yeni adlandırılmış dəyərlər əlavə edə və ya mövcud olanları silə bilərsiniz.

  • 2021
    maccase.ru - Android. Markalar. Dəmir. xəbərlər