JavaScript შეამოწმეთ ტიპის ცვლადი. TypeOF ქვითრის ოპერატორი

a \u003d (B\u003e 0) && (c + 1! \u003d დ); დროშა \u003d! (სტატუსი \u003d 0);

ცხრილი 14.5. ლოგიკური ოპერატორები

ოპერატორის აღწერა

! არა (ლოგიკური ინვერსია)

&& და (ლოგიკური გამრავლება)

|| ან (ლოგიკური დამატება)

ცხრილი 14.6. ოპერატორების აღსრულების შედეგები და ან

ოპერატორი 1.

ოპერატორი 2.

ცხრილი 14.7. ოპერატორის აღსრულების შედეგები არ არის

TypeOF ქვითრის ოპერატორი

ტიპი ქვითრის ოპერატორიtypeoF ბრუნდება სიმებიანი, რომელიც აღწერს ტიპის ოპერაციის მონაცემებს. ოპერატორი, რომელთა ტიპიც თქვენ უნდა იცოდეთ, მოთავსებულია ამ ოპერატორის შემდეგ და შევა ფრჩხილებში:

s \u003d typeof ("str");

ცვლადში ამ გამოხატვის აღსრულების შედეგად ეს იქნება სიმებიანი "სიმებიანი", რომელიც სიმებიანი ტიპის აღწერს.

ყველა ღირებულების, რომ TypeOf ოპერატორი შეიძლება დაბრუნდეს არის ჩამოთვლილი მაგიდა. 14.8.

ცხრილი 14.8. ღირებულებები დაბრუნდა TypeOF ოპერატორის მიერ

Მონაცემთა ტიპი

დაბრუნება

სიმი

ციფრული

ცხრილი 14.8 (დასასრული)

Მონაცემთა ტიპი

დაბრუნება

ლოგიკური

თავსებადობა და მონაცემთა ტიპი კონვერტაცია

დროა კიდევ ორი \u200b\u200bმნიშვნელოვანი საკითხია: მონაცემთა ტიპების თავსებადობა და ერთი ტიპის კონვერტაცია.

რა მოხდება, თუ ორი რიცხვითი ღირებულების დაკეცილი? ეს არის სწორი - სხვა რიცხვითი მნიშვნელობა. და თუ თქვენ ჩამოყაროს ნომერი და სიმებიანი? ძნელი სათქმელია ... აქ JavaScript აყალიბებს მონაცემთა ტიპების შეუთავსებლობის პრობლემას და ცდილობს ამ ტიპის თავსებადია, მათ ერთ-ერთი მათგანის გარდაქმნას. პირველი, ის ცდილობს შეცვალოს ზედიზედ ნომერზე და, თუ ეს მართავს, ასრულებს დამატებით. მარცხის შემთხვევაში, რიცხვი გადაკეთდება სიმებიანი და ორი რიგის მოპოვება იქნება კომბინირებული. მაგალითად, ვებ სცენარის განხორციელების შედეგად 14.6-ის ჩამონათვალიდან, ცვლადის ღირებულების ღირებულება ცვლადი A- სგან გადაკეთდება რიცხვითი ტიპით; ამდენად, ცვლადი C შეიცავს ღირებულებას 23.

ჩამონათვალი 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;

მაგრამ მას შემდეგ, რაც ცვლადი D- ის ღირებულება არ შეიძლება მოაქციოს ნომერზე, E- ის ღირებულება კონვერტირებულია სიმებიანი და შედეგი - F- ის ღირებულება თანაბარი იქნება

ლოგიკური ღირებულებები კონვერტირებულია ან რიცხვითი ან სიმებიანი, კონკრეტული საქმის მიხედვით. ჭეშმარიტი მნიშვნელობა გადაიქცევა ნომერზე 1 ან სიმებიანი "1" და ღირებულება ცრუ - 0 ან "0" -ში. პირიქით, რიცხვი 1 იქნება მოაქცია ჭეშმარიტი, და ნომერი 0 არის FALSE. ასევე ცრუში გარდაიქმნება

null და undefined ღირებულებები.

ნაწილი III. ქცევის ვებ გვერდები. ვებ სცენარი

ეს ჩანს, რომ JavaScript იბრძვის სწორად შეასრულოს არასწორი წერილობითი გამონათქვამები. ზოგჯერ აღმოჩნდება, მაგრამ უფრო ხშირად მუშაობს ყველაფერი, რაც დაგეგმილია, ხოლო საბოლოო ჯამში, ვებ სცენარის განხორციელება ხელს უშლის შეცდომის გამოვლენას მთლიანად მის სხვა ადგილას, აბსოლუტურად სწორი განცხადებით. აქედან გამომდინარე, უმჯობესია ასეთი ინციდენტების თავიდან ასაცილებლად.

ოპერატორების პრიორიტეტი

ბოლო შეკითხვა ჩვენ აქ მოვახდენთ ოპერატორების პრიორიტეტს. როგორც გვახსოვს, პრიორიტეტი გავლენას ახდენს ბრძანებით, რომელშიც ოპერატორები ხორციელდება გამოხატულებაში.

მოდით იყოს შემდეგი გამოხატულება:

ამ შემთხვევაში, პირველ რიგში, ცვლადი B- ის ღირებულება დაემატება C- ს, ხოლო 10-ისგან 10 დაიქვითება. ამ გამოხატვის ოპერატორები იგივე პრიორიტეტს იძლევიან და ამიტომ მკაცრად დატოვებენ მარჯვნივ.

ახლა ასეთი გამოხატულებაა:

აქ, პირველად შესრულდება C- ს 10-ის ღირებულების გამრავლება, ხოლო მხოლოდ მაშინ, როდესაც B- ს ღირებულება B- ს დაემატება. გამრავლების ოპერატორს უფრო დიდი პრიორიტეტი აქვს, ვიდრე დამატებით ოპერატორი, ასე რომ ბრძანება "მკაცრად დარჩა მარჯვნივ".

დავალების ოპერატორების ყველაზე დაბალი პრიორიტეტი. ამიტომაც გამოხატულება პირველად გამოითვლება, შემდეგ კი მისი შედეგი ენიჭება ცვლას.

-ში ზოგადად, ყველა ოპერატორის შესრულების ძირითადი პრინციპი ასეთია: პირველი ოპერატორები ხორციელდება უმაღლესი პრიორიტეტით და მხოლოდ მოგვიანებით ოპერატორებს ქვედა. ოპერატორები იმავე პრიორიტეტს ასრულებენ მათ ბრძანებით (მარცხნიდან მარჯვნივ).

-ში მაგიდა. 14.9 ჩვენ მიერ შესწავლილი ოპერატორები მათი პრიორიტეტების მიხედვით ჩამოთვლილია.

ცხრილი 14.9. ოპერატორების პრიორიტეტი (კლებადობის ორდერში)

ოპერატორები

აღწერილობა

++ - - ~! ტიპიფი.

გაზრდა, შემცირება, შესვლა ცვლილება, ლოგიკური არ, განმარტება

გამრავლება, განყოფილება, ბალანსის აღება

დამატება და რიგის შერწყმა, გამოკლება

ოპერატორების შედარება

ლოგიკური I.

თავი 14. ვებ პროგრამირების შესავალი. JavaScript ენა

ცხრილი 14.9 (დასასრული)

ოპერატორები

აღწერილობა

ლოგიკური ან

პირობითი ოპერატორი (იხ. ქვემოთ)

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

დავალება, მარტივი და რთული

ყურადღება!

გახსოვდეს ეს მაგიდა. ოპერატორების შესრულების არასწორი პროცედურა შეიძლება გამოიწვიოს რთული შეცდომები, რომელშიც გარედან აბსოლუტურად სწორი გამოხატულება არასწორია.

მაგრამ რა მოხდება, თუ ჩვენ გვჭირდება ოპერატორების აღსრულების ჩვეულებრივი წესრიგი? ჩვენ ვიყენებთ ფრჩხილებს. ფრჩხილებში თანდართული შესვლისას, ოპერატორები პირველად ხორციელდება:

\u003d (B + C) * 10;

აქ, პირველ რიგში, ცვლადების ღირებულებების დამატება B და C დასრულდება, ხოლო შემდეგ თანხა 10-ით გამრავლდება.

ფრჩხილებში თანდართული ოპერატორები ასევე პრიორიტეტს ექვემდებარებიან. ამიტომ, მრავალჯერადი ფრჩხილები ხშირად გამოიყენება:

a \u003d (B + C) * 10 - D) / 2 + 9;

აქ ოპერატორები შესრულდება ასეთ თანმიმდევრობით:

1. გარდა B და C.

2. გამრავლების თანხა 10-ით.

3. Subtract D სამუშაოდან.

4. განსხვავება 2.

5. Adjament 9 კერძო.

თუ ფრჩხილების ამოღება:

\u003d B + C * 10 - D / 2 + 9;

ოპერატორების აღსრულების ბრძანება იქნება:

1. გამრავლება C და 10.

2. გამყოფი D 2.

3. B და მუშაობს C და 10.

4. სუბტრაქცია მიღებული თანხისგან სამმართველოსგანd 2.

5. მორგებული 9 მიღებული განსხვავებით.

გამოდის სრულიად განსხვავებული შედეგი, არა?

  • Undefined: undefined
  • Null: "ობიექტი"
  • ლოგიკური: "ლოგიკური"
  • ნომერი: "ნომერი"
  • სიმებიანი: "სიმებიანი"
  • ფუნქცია: "ფუნქცია"
  • ყველაფერი სხვა: "ობიექტი"

ამ მაგიდაზე უნდა დაემატოს შემდეგი კომენტარები:

1. TypeOF null \u003d\u003d\u003d "ობიექტი".

თეორიულად აქ არის დახვეწილი მომენტი. ენებზე სტატიკური აკრეფით, ობიექტის ტიპის ცვლადი არ შეიძლება შეიცავდეს ობიექტს (, nil, ნულოვანი მაჩვენებელი).

პრაქტიკულად - JavaScript არის არასასიამოვნო. აქედან გამომდინარე, ES 5.1 დეველოპერები აპირებენ უფრო ინტუიციური რამ: typeof null \u003d\u003d\u003d "null".

მაგრამ მას შემდეგ, რაც ჩვენ ჯერ კიდევ გვაქვს ES3 წრე, არ შეცდომა, მაგალითად, ამის შესახებ:

/ * ფუნქცია ეძებს რამდენიმე ობიექტს და დააბრუნებს მას ან null თუ არაფერი არ არის ნაპოვნი * / ფუნქცია ძებნა () var obj \u003d ძებნა (); თუ (typeof obj \u003d\u003d\u003d "ობიექტი") (// ჩვენ ნამდვილად გვქონდა ობიექტი (ვერ) obj.method ();)

2. ნუ დაივიწყებთ გადატვირთვის ობიექტების შესახებ (ახალი ნომრის ტიპი (5) \u003d\u003d\u003d "ობიექტი").

3. და არ უნდა დაგვავიწყდეს უფლება ბრაუზერები შექმნას არაფერი მასპინძელი ობიექტები.

არ გაგიკვირდეთ, რომ Safari დაჟინებით მიიჩნევს HTMLCOLLECTION ფუნქციის ტიპით, და მე -9 ვერსია, ვიდრე მე -9 ვერსია შეინახოს ჩვენი საყვარელი მზადყოფნა () ფუნქცია ობიექტი. ასევე Chrome გამოიყენება regexp ფუნქციის წაკითხვისთვის, მაგრამ ახლა, როგორც ჩანს, ჩამოყალიბდება და პასუხობს მას.

tostring ()

ცდილობს გაირკვეს ტიპის ღირებულების მიხედვით მისი tostring () მეთოდი უაზროა. ყველა "კლასში", ეს მეთოდი გადალახავს მას.

Debug- ის ინფორმაციის გამო, მეთოდი კარგია, მაგრამ ცვლადის ტიპი არ განსაზღვრავს მას.

Object.Prototype.tostring ()

მიუხედავად იმისა, რომ tostring overridden ფარგლებში კონკრეტული "კლასების", ჩვენ ჯერ კიდევ აქვს თავდაპირველი განხორციელება ობიექტი. შევეცადოთ გამოიყენოთ იგი:

CONSOLE.LOG (ობიექტი .პროტოტიპი .tostring .Call (ღირებულება));

console.log (object.prototype.tostring.call (ღირებულება));


კლინტონი ამ Pullomotine Dilutes

უცნაურად საკმარისი, ეს მეთოდი საოცრად კარგად მუშაობს.

Scalar ტიპის, დაბრუნების, ,,,

სასაცილო ის არის, რომ თუნდაც ახალი ნომერი (5), რომელზეც აქვე დააბრუნებს.

Null და undefined მეთოდი ვაძლევთ წარუმატებლობებს. სხვადასხვა ბრაუზერები დაბრუნდებიან, შემდეგ მოსალოდნელია და, შემდეგ, ზოგადად. თუმცა, ადვილია განსაზღვროს ეს ორი ღირებულების ტიპი და მის გარეშე.

საინტერესო იწყება, როდესაც ჩვენ მივუდგეთ ობიექტებს (მათ, ვისაც აქვს typof \u003d\u003d\u003d "ობიექტი").

ჩამონტაჟებული ობიექტები, პრაქტიკულად, Bang:

  • {} —
  • თარიღი -
  • შეცდომა -
  • Regexp -

ერთადერთი, რომელიც არ არის არგუმენტების სიიდან, რომელიც არის.
მასპინძელი ობიექტებით, კიდევ უფრო უარესი.

IE, DOM ობიექტების დაიწყო "ნორმალური" ობიექტების მხოლოდ მე -8 ვერსია და შემდეგ არ დასრულდება. აქედან გამომდინარე, IE 6-8, ყველა ეს ობიექტი (htmlcollection, domelement, textnode, და ამავე დროს დოკუმენტი და ფანჯარა) უბრალოდ ამოძრავებს.

ყველა სხვა ბრაუზერში (მათ შორის IE9) TOSTRING- ის შედეგად თქვენ უკვე შეგიძლიათ გააკეთოთ რაღაც. მიუხედავად იმისა, რომ ყველაფერი არ არის ადვილიც: HTMLCollection არის იქ, მაშინ. ფანჯარა - მაშინ, მაშინ. მაგრამ ეს თქვენ უკვე შეგიძლიათ სცადოთ excite რაღაც.

უფრო რთული ერთად domelement: ეს არის ნაჩვენები ფორმით - მისი ფორმატი თითოეული tag. მაგრამ აქ რეგულარულად დაგვეხმარება.

სხვა მასპინძელი ობიექტებით (ადგილმდებარეობისა და ნავიგატორის ტესტებში) იგივე ამბავი. ყველგან, გარდა IE, ისინი შეიძლება იდენტიფიცირდეს ზედიზედ.

Minuses of Object.Prototype.Tostring ():

1. ამის შესაძლებლობა არ არის აკურთხა სტანდარტული. და ჩვენ უბრალოდ უნდა გაიხარონ აქ ყველაფერი კარგად მუშაობს და არა გარკვეული ხარვეზების შესახებ.

2. მეთოდით დაბრუნებული სინტაქსის ნიმუშის ტიპის განსაზღვრა, რომელიც არ არის ყველა, რათა დადგინდეს ტიპის, და კვლავ გამოწვეულია დაწესებულებაში, რომელსაც არ ვრცელდება, ტოვებს საშხაპეზე.

3. ძველ IE- ში, როგორც ჩანს, მასპინძელი ობიექტები არ არის ნორმალურად.

თუმცა, ეს სრულიად მუშაობს, როდესაც გამოიყენება სხვა საშუალებებთან ერთად.


დიზაინერები

და ბოლოს, დიზაინერები. ვინ შეიძლება უკეთესად თქვას "კლასის" ობიექტის შესახებ JS- ში, თუ არა მისი დიზაინერი?

Null და undefined არ აქვს გადატანა ობიექტები ან დიზაინერები.

დარჩენილი სკალარული ტიპები, შესაბამისად, შეგიძლიათ მიიღოთ კონსტრუქტორი:

(5) .constructor \u003d\u003d\u003d ნომერი; (ნომერი .NAN) .Constructor \u003d\u003d\u003d ნომერი; (ჭეშმარიტი) .constructor \u003d\u003d\u003d ლოგიკური; ("სიმებიანი") .constructor \u003d\u003d\u003d სიმებიანი;

(5) .constructor \u003d\u003d\u003d ნომერი; (Number.nan) .constructor \u003d\u003d\u003d ნომერი; (ჭეშმარიტი) .constructor \u003d\u003d\u003d ლოგიკური; ("სიმებიანი"). კონსტრუქტორი \u003d\u003d\u003d სიმებიანი;

მაგრამ ინსტანცია არ გაივლის აქ:

5 ინსტანციის ნომერი; // ცრუ ნომერი .Nan ინსტანციის ნომერი; // ცრუ ჭეშმარიტი ინსტანციის ლოგიკური; // ცრუ "სიმებიანი" ინსტანციის სიმებიანი; // ცრუ

5 ინსტანციის ნომერი; / / FALSE NUMBER.NAN INSTANGEOF ნომერი; // ცრუ ჭეშმარიტი ინსტანციის ლოგიკური; // ცრუ "სიმებიანი" ინსტანციის სიმებიანი; // ცრუ

(ინსტანცია იმუშავებს ხანგრძლივი ტანჯვის ახალი ნომრისთვის (5)

ფუნქციებით (რომლებიც ასევე ობიექტებია) და მაგალითად:

Console.log ((ფუნქცია ()) ინსტანციის ფუნქცია); // ნამდვილი console.log ((ფუნქცია ()) .constructor \u003d\u003d\u003d ფუნქცია); // სიმართლე.

console.log ((ფუნქცია ()) ინსტანციის ფუნქცია); // ნამდვილი console.log ((ფუნქცია ()). კონსტრუქტორი \u003d\u003d\u003d ფუნქცია); // სიმართლე.

ყველა ჩართული კლასების ასევე ადვილად იდენტიფიცირებულია დიზაინერები: მასივი, თარიღი, regexp, შეცდომა.

ერთი პრობლემა აქ არის არგუმენტებით, რომლის კონსტრუქტორი.

და მეორე ობიექტი თავად, უფრო სწორად, თუ როგორ უნდა ატრიბუტი ობიექტი შექმნილი მომხმარებლის დიზაინერი.

ასე რომ თქვენ შეგიძლიათ მხოლოდ განსაზღვროთ ძირითადი ობიექტი:

oBJ ინსტანციის ობიექტი;

როგორც განსაზღვრის ერთ-ერთი ვარიანტი - ყველა სხვა შესაძლო ტიპის (მასივი, შეცდომა ...) გადაადგილება და თუ არც ერთი არ არის ძირს უთხრის - "ობიექტი".

დიზაინერები და მასპინძელი ობიექტები

მასპინძელი ობიექტებით უარესია.

დავიწყოთ ის ფაქტი, რომ ანუ მე -7 ვერსიით, არ ითვალისწინებს მათ ნორმალურ ობიექტებს. მათ უბრალოდ არ აქვთ დიზაინერები და პროტოტიპები (ნებისმიერ შემთხვევაში, პროგრამისტი არ მიაღწევს მათ).

სხვა ბრაუზერებში უკეთესია. დიზაინერები არიან და შეგიძლიათ განსაზღვროთ ღირებულების კლასი. ისინი მხოლოდ სხვადასხვა ბრაუზერებში სხვადასხვა გზით უწოდებენ. მაგალითად, HTMLCollection- ისთვის, დიზაინერი იქნება HTMLCOLLECTION ან NODELIST, ან თუნდაც nodelistconstructor.

თქვენ ასევე უნდა განსაზღვროთ ძირითადი დიზაინერი დომინირებისთვის. FF, ეს, მაგალითად, htmlelement, საიდანაც htmldivelement და სხვები უკვე მემკვიდრეობით.

Firefox არის Firefox ქვემოთ მე -10 ვერსია და ოპერის ქვემოთ 11. არსებობს კოლექცია კონსტრუქტორი - ობიექტი.

კონსტრუქტორი.

უფრო მშენებლობას აქვს სახელი ქონება, რომელიც შეიძლება სასარგებლო იყოს.

იგი შეიცავს დიზაინერის ფუნქციის სახელს, მაგალითად, (5) .Constructor.Name \u003d\u003d\u003d "ნომერი".

მაგრამ:
1. IE IE არ არის კი, მე -9.
2. მასპინძელ ობიექტებში, ბრაუზერები კვლავ მიიღებენ თითოეულ მათგანს (და ხშირად მათ არ აქვთ ეს ქონება საერთოდ). ოპერაში, დომენმა წარმოადგენს დიზაინერის სახელი ზოგადად ფუნქციონირებს.
3. არგუმენტები კვლავ "ობიექტი".

დასკვნები

არცერთი წარმოდგენილი მეთოდი არც ერთ ბრაუზერში არ არის ასი პროცენტით. თუმცა, საერთო ჯამში ისინი საშუალებას მისცემს მას.

უახლოეს მომავალში მე შევეცდები ყველა მონაცემის შეგროვებას ნიშნები და მისცეს მაგალითი განსაზღვრის ფუნქცია.

JavaScript. ან Js. (აბრევიატურა) არ არის მარტივი ენა და ახალბედა დეველოპერები დაუყოვნებლივ არ იციან ამის შესახებ. თავდაპირველად ისინი აღიარებენ საფუძვლებს და ყველაფერი ფერადი და ლამაზია. ვეძებთ პატარა ღრმა, JavaScript გამოჩნდება მასივები, ობიექტები, ზარები და ყველაფერი, რაც ხშირად ხდის ტვინს.

Javascript მნიშვნელოვანია სწორად შეამოწმოთ ტიპის ცვლადი. დავუშვათ, რომ გაიგოთ თუ არა ცვლადი მასივი ან ობიექტი? როგორ შეამოწმოთ ეს უფლება? ამ კონკრეტულ შემთხვევაში, ინსპექტირების დროს ხრიკები არიან და ეს იქნება ეს ჩანაწერი. მოდით დაუყოვნებლივ გაგრძელება.

ცვლადი ტიპის შემოწმება

მაგალითად, თქვენ უნდა შეამოწმოთ ობიექტი ცვლადი, მასივი, სიმებიანი ან ნომერი. ამისათვის თქვენ შეგიძლიათ გამოიყენოთ TypeOF, მაგრამ ეს ყოველთვის არ მისცემს სიმართლეს და ქვემოთ მოცემულ მაგალითში მე ვაჩვენებ რატომ.

მე დავწერე ეს მაგალითი ნათლად აჩვენებს, რატომ არ არის სწორი არჩევანი.

Var _comparison \u003d (სიმებიანი: "სიმებიანი", INT: 99, Float: 13.555, ობიექტი: (გამარჯობა: "Hi"), მასივი: ახალი მასივი (1, 2, 3)); // დაბრუნება მასივი ერთად keys of var _objkeys ობიექტი \u003d object.keys (_comparison); for (var i \u003d 0; მე<= _objKeys.length - 1; i++) { // выведем в консоль тип каждой переменной console.log(typeof _comparson[_objKeys[i]]); }

კოდის შესრულების შედეგი:

სიმებიანი პუნქტების ნომერი ობიექტის ობიექტი

უფლება? - Რათქმაუნდა არა. არსებობს ორი პრობლემა. თითოეული მათგანი დეტალურად იქნება აღწერილი და ვარაუდობს.

პირველი პრობლემა: float ნომერი, გამომავალი როგორც ნომერი

შედარება.ფლეოტი არ არის რიცხვი და რიცხვის ნაცვლად უნდა იყოს float (მცურავი წერტილი ნომერი), ეს არის ფიქსირებული, შეგიძლიათ შექმნათ გამშვები ფუნქცია, როგორც ქვემოთ მოცემული კოდი.

Var _Floatnumber \u003d 9.22; var _notfloatnumber \u003d 9; Console.log (Isfloat (_Floatnumber)); Console.log (isfloat (_Notfloatnumber)); Console.log (Isfloat (")); ფუნქცია IsFloat (N) (დაბრუნება ნომერი (N) \u003d\u003d\u003d N && n% 1! \u003d\u003d 0;)

IsFloat () ფუნქცია ასრულებს ყველა ღირებულებების შემოწმებას მცურავი პუნქტის ნომრებით. პირველად შეამოწმეთ თუ არა ცვლადი თანაბარი ნ. ნომერი (ნომერი (n) \u003d\u003d\u003d n) და თუ კი, მაშინ კიდევ ერთი Validation Check მზადდება ნარჩენებით და თუ ნარჩენი არის ნარჩენები, მაშინ ბულავა ბრუნდება ( მართალია. ან ცრუ) შედეგი (n% 1! \u003d\u003d 0).

მაგალითში ზემოთ მოყვანილ მაგალითში მართალია., ცრუ და ცრუ. პირველი ღირებულებაა float.ტიპი, მეორე არ არის - ეს არის ჩვეულებრივი რიცხვი და ბოლო მხოლოდ ცარიელი სიმებიანი, რომელიც არ შეესაბამება წესებს.

მეორე პრობლემა: მასივი განისაზღვრა ობიექტი

პირველ რიგში, მასივი ობიექტი იყო და ეს არ არის ძალიან კარგი, რადგან ზოგჯერ თქვენ უნდა გამოიყენოთ ეს კონკრეტული ტიპი და მეტი არაფერი.

არსებობს რამდენიმე გზა, რათა შეამოწმოთ ცვლადი ტიპის მასივი.

პირველი ვარიანტი (კარგი ვარიანტი). შეამოწმეთ მონაცემების აქსესუარი მასივის გამოყენებით ().

Var data \u003d ახალი მასივი ("გამარჯობა", "მსოფლიო"); Var Isarr \u003d მონაცემთა ინსტანციის მასივი;

მეორე ვერსია (კარგი ვარიანტი). Array.isarray () მეთოდი დაბრუნდა ლოგიკური ღირებულება, რომელიც დამოკიდებული იქნება თუ არა ცვლადი მასივი თუ არა ().

Var data \u003d ახალი მასივი ("გამარჯობა", "მსოფლიო"); var isarr \u003d array.isarray (მონაცემები);

მესამე ვარიანტი (საუკეთესო, მაგრამ ხანგრძლივი). კომფორტული, შეგიძლიათ ამ გზით ფუნქცია. ობიექტის გამოყენება, ჩვენ გავაკეთებთ. თუ შედეგი POUCH.PROTOTYPE.TOSTRING.CALL (მონაცემები) არ არის ტოლი ცვლადი არ არის მასივი ().

Var data \u003d ახალი მასივი ("გამარჯობა", "მსოფლიო"); var isarr \u003d object.prototype.tostring.call (მონაცემები) \u003d\u003d ""; Console.log (isarr);

ბოლო შედეგი მოსახერხებელი ფუნქციის სახით:

ფუნქცია Isarray (მონაცემები) (დაბრუნება Object.Prototype.tostring.call (მონაცემები) \u003d\u003d ")

ახლა თქვენ შეგიძლიათ დარეკოთ ისრაიზი () ფუნქციები და როგორც არგუმენტი, რათა შეიქმნას მასივი ან რაღაც სხვა და ვნახოთ შედეგი.

შემდეგ

ჩანაწერი აღმოჩნდა საკმაოდ დიდი, ვიდრე თავდაპირველად ფიქრობდა. მაგრამ მე კმაყოფილი ვარ, რადგან მოკლედ და ნათლად აღწერს სირთულეებს JavaScript- ში ცვლადების შემოწმებისას და როგორ უნდა მიიღოთ მათ გარშემო.

თუ თქვენ გაქვთ რაიმე შეკითხვები - ჩაწერეთ ქვემოთ ჩამოთვლილი ჩანაწერი. ბედნიერი ვიქნები.

ტელეფონისტი ქალი ტიპიფი. აბრუნებს სიმებიანი ოპერის ტიპის მითითებას.

Სინტაქსი

ოპერატორი შემდეგია:

ტიპიფი. ოპერატორი.

Პარამეტრები

ოპერატორი. ეს არის გამოხატულება ობიექტის ან პრიმიტიული, რომლის ტიპიც უნდა დაბრუნდეს.

აღწერილობა

შემდეგი ცხრილი გვიჩვენებს შესაძლო დაბრუნებული ტიპის ღირებულებებს. გვერდისა და პრიმიტივების შესახებ დამატებითი ინფორმაცია.

მაგალითები

/ / ნომრები ტიპიფიცირებული 37 \u003d\u003d\u003d "ნომერი"; 3.14 \u003d\u003d\u003d "ნომერი"; ტიპიფი (42) \u003d\u003d\u003d "ნომერი"; Typeof math.ln2 \u003d\u003d\u003d "ნომერი"; Infinity \u003d\u003d\u003d "ნომერი"; Typeof nan \u003d\u003d\u003d "ნომერი"; / მიუხედავად იმისა, რომ ეს არის "არა-ნომერი" (არა რიცხვი) ტიპიური ნომერი (1) \u003d\u003d\u003d "ნომერი"; / / არასოდეს გამოიყენოთ ეს ჩანაწერი! // სიმებიანი ტიპი "" \u003d\u003d\u003d "სიმებიანი"; TypeOF "BLA" \u003d\u003d\u003d "სიმებიანი"; ტიპიფი "1" \u003d\u003d\u003d "სიმებიანი"; / / გთხოვთ გაითვალისწინოთ, რომ სიმებიანი რიცხვი ჯერ კიდევ აქვს სიმებიანი ტიპის ტიპი (TypeOF 1) \u003d\u003d\u003d "სიმებიანი"; // Typeof ყოველთვის დაბრუნდება ამ შემთხვევაში TypeOf სიმებიანი სიმებიანი ("ABC") \u003d\u003d\u003d "სიმებიანი"; / / არასოდეს გამოიყენოთ ეს ჩანაწერი! // Booleans TypeOF True \u003d\u003d\u003d "ლოგიკური"; TypeOF FALSE \u003d\u003d\u003d "ლოგიკური"; TypeOF Boolean (True) \u003d\u003d\u003d "ლოგიკური"; / / არასოდეს გამოიყენოთ ეს ჩანაწერი! / / Syms სიმბოლოების სიმბოლო () \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d. TypeOF DELLEDBUTUNDEFINEDVIATIATIATIATIATIATIATIATIBEIBEIBLE \u003d\u003d\u003d "UNDEFINED"; Undeclaredvariable \u003d\u003d\u003d "განუსაზღვრელი"; // typeof ობიექტები (A: 1) \u003d\u003d\u003d "ობიექტი"; // გამოიყენეთ array.isarray ან object.prototype.tostring.call // განასხვავოს ჩვეულებრივი ობიექტები და typeof \u003d\u003d\u003d "ობიექტი" მასივები; ახალი თარიღის ტიპი () \u003d\u003d\u003d "ობიექტი"; / / რომ ქვედა მივყავართ შეცდომებსა და პრობლემებს. Არ გამოიყენოთ! ახალი ლოგიკური (ჭეშმარიტი) \u003d\u003d\u003d "ობიექტი"; ახალი ნომრის ტიპი (1) \u003d\u003d\u003d "ობიექტი"; TypeOF NEW STRING ("ABC") \u003d\u003d\u003d "ობიექტი"; // ფუნქციები ტიპიფი ფუნქცია () \u003d\u003d\u003d "ფუნქცია"; TypeOF კლასის C () \u003d\u003d\u003d "ფუნქცია"; Typeof math.sin \u003d\u003d\u003d "ფუნქცია";

არვენა

// ეს განისაზღვრა JavaScript TypeOF null \u003d\u003d\u003d "ობიექტის" დაბადებიდან;

JavaScript- ის პირველი განხორციელებისას, ღირებულებები წარმოდგენილი იყო წყვილი Tag ტიპის და ღირებულებით. Tag Tag for Objects იყო 0. NULL წარმოდგენილი იყო როგორც ნულოვანი მაჩვენებელი (0x00 უმეტეს პლატფორმების). აქედან გამომდინარე, tag ტიპის null იყო ნულოვანი, ასე რომ დაბრუნების ღირებულება typef არის ფიქტიური. ()

კორექტირება ითხოვდა ეკასკრიპტში (გამორთვა), მაგრამ უარყოფილი იქნა. ეს გამოიწვევს იმ ფაქტს, რომ typof null \u003d\u003d\u003d "null".

ახალი ოპერატორის გამოყენებით

/ / "ახალი" გამოყენებით შექმნილი ყველა ფუნქცია-დიზაინერებს ექნებათ ტიპი "ობიექტი" ვარდისფერი \u003d ახალი სიმებიანი ("სიმებიანი"); var num \u003d ახალი ნომერი (100); TypeOf Str; // დაბრუნება "ობიექტი" typeof num; // დაბრუნდება "ობიექტი" // მაგრამ არსებობს გამონაკლისი ფუნქცია var func \u003d ახალი ფუნქცია () კონსტრუქტორი; Func- ის ტიპი; // დაბრუნება "ფუნქცია"

რეგულარული გამონათქვამები

დარეკეთ რეგულარული გამონათქვამები ზოგიერთ ბრაუზერში არასტანდარტული დანამატი იყო.

ტიპი / s / \u003d\u003d\u003d "ფუნქცია"; // Chrome 1-12 არ ემთხვევა Ecmascript 5.1 typeof / s / \u003d\u003d\u003d "ობიექტი"; / Firefox 5+ შეესაბამება Ecmascript 5.1

შეცდომები ასოცირდება დროებითი მკვდარი ზონებით

სანამ Ecmascript 2015, გარანტირებული იყო, რომ TypeOf ოპერატორი დაბრუნდება სიმებიანი ნებისმიერი ოპერაცია, რომელიც მას ეწოდა. ეს შეიცვალა შემდეგ არასამთავრობო submissive ნება და CONST განცხადებები ბლოკის ფართობი ხილვადობა. ახლა, თუ ცვლადები გამოცხადდება გამოყენებით და კონსტიტუცია, და მათთვის ეწოდება TypeoF კლასის დეკლარაციის ერთეული, მაგრამ სანამ განცხადება, referencerreorror არის ejected. ქცევა განსხვავდება გამოუცხადებელი ცვლადებისგან, რისთვისაც "განუსაზღვრელი" დაბრუნდება. "დროებითი მკვდარი ზონაში" ბლოკის ფართობის ცვლადები "დროებითი მკვდარი ზონაშია", რომელიც გრძელდება ბლოკის დასაწყისიდან ცვლადების დეკლარაციამდე. ამ ზონაში, ცვლადების წვდომის მცდელობა გამონაკლისია.

Undeclaredvariable \u003d\u003d\u003d "განუსაზღვრელი"; გაცნობის newlevariable; მოდით newletvariable; // ReferenceError TypeOF NewConstVariable; კონსტრუქცია newconstvariable \u003d "გამარჯობა"; // ReferenceError

გამონაკლისი

ყველა მიმდინარე ბრაუზერში არის არასტანდარტული დოკუმენტი. მასპინძელი ობიექტი, რომელსაც აქვს განუსაზღვრელი.

Typeof document.all \u003d\u003d\u003d "undefined";

მიუხედავად იმისა, რომ დაზუსტება იძლევა საკუთარი ტიპის ტიპებს არასტანდარტული ეგზოტიკური ობიექტებისათვის, საჭიროა, რომ ეს სახელები განსხვავდება წინასწარ განსაზღვრული. სიტუაცია, როდესაც დოკუმენტი. ყველა ტიპის განუსაზღვრელია, უნდა ჩაითვალოს წესების განსაკუთრებული დარღვევა.

სპეციფიკაციები

სპეციფიკაცია სტატუსი კომენტარები
Ecmascript უახლესი პროექტი (ECMA-262)
კანონპყრობა
Ecmascript 2015 (მე -6 გამოცემა, ECMA-262)
განმარტება "The Typeof ოპერატორი" ამ სპეციფიკაში.
სტანდარტი
Ecmascript 5.1 (ECMA-262)
განმარტება "The Typeof ოპერატორი" ამ სპეციფიკაში.
სტანდარტი
Ecmascript მე -3 გამოცემა (ECMA-262)
განმარტება "The Typeof ოპერატორი" ამ სპეციფიკაში.
სტანდარტი
Ecmascript 1 Edition (ECMA-262)
განმარტება "The Typeof ოპერატორი" ამ სპეციფიკაში.
სტანდარტი საწყისი განმარტება. განხორციელდა JavaScript 1.1

თავსებადობა ბრაუზერებთან

განაახლეთ თავსებადობის მონაცემები GitHub- ზე

კომპიუტერებიმოძრავისერვერი
Chrome.ზღვარი.Firefox.Internet Explorer.ოპერისა.Safari.Android WebView.Chrome for AndroidFirefox for Androidოპერის AndroidSafari on iOS.Samsung ინტერნეტიNode.js.
ტიპიფი.Chrome. Სრული დახმარება 1 ზღვარი. Სრული დახმარება 12 Firefox. Სრული დახმარება 1 ანუ Სრული დახმარება 3 ოპერისა. Სრული დახმარება დიახSafari. Სრული დახმარება დიახWebView Android Სრული დახმარება 1 Chrome Android Სრული დახმარება 18 Firefox Android Სრული დახმარება 4 ოპერისა Android Სრული დახმარება დიახSafari iOS. Სრული დახმარება დიახSamsung Internet Android Სრული დახმარება 1.0 nodejs. Სრული დახმარება დიახ

ლეგენდა

Სრული დახმარება Სრული დახმარება

IE- სპეციფიკური ცნებები

IE 6, 7 და 8, ბევრი მასპინძელი ობიექტებია ობიექტები, მაგრამ არა თვისებები. Მაგალითად.