2. JavaScript : ค่าและประเภท

Jan 07 2023
คุณรู้หรือไม่ว่า JavaScript มีค่าที่พิมพ์แทนที่จะเป็นตัวแปรที่พิมพ์ ซึ่งแตกต่างจากภาษาโปรแกรมอื่นๆ ต้องการทราบว่า JavaScript มีการบังคับใช้ประเภทหรือไม่ เจาะลึกบทความนี้เพื่อทราบว่า JavaScript มีค่าประเภทอย่างไรและเพราะเหตุใด
เครดิตรูปภาพ: วิกิมีเดียคอมมอนส์ (แก้ไขเป็น Creative Liberty)

คุณรู้หรือไม่ว่า JavaScript มีค่าที่พิมพ์แทนที่จะเป็นตัวแปรที่พิมพ์ ซึ่งแตกต่างจากภาษาโปรแกรมอื่นๆ ต้องการทราบว่า JavaScript มีการบังคับใช้ประเภทหรือไม่

เจาะลึกบทความนี้เพื่อทราบว่า JavaScript มีค่าประเภทอย่างไรและเพราะเหตุใด นอกจากนี้ ทำความเข้าใจเกี่ยวกับประเภทในตัวใน JavaScript และดูว่า Type Enforcement มีอยู่ใน JavaScript หรือไม่!

JavaScript มีค่าที่พิมพ์ ไม่ใช่ตัวแปรที่พิมพ์ นี่หมายความว่าใน JavaScript ตัวแปรไม่มีประเภทค่ามีประเภท ตัวแปรใน JS เป็นเพียงคอนเทนเนอร์ธรรมดาสำหรับค่าเหล่านั้น (คุณจะเห็นในตัวอย่างด้านล่าง สิ่งนี้หมายความว่าอะไร )

ด้านล่างนี้คือ 7 ประเภทที่มีอยู่แล้วใน JavaScript:

  • string→ ชุดอักขระหรือข้อความ
  • number→ จำนวนเต็มหรือเลขทศนิยม
  • boolean→ จริงหรือเท็จ
  • null→คำหลักพิเศษแสดงว่าเป็นโมฆะ
  • undefined→ แสดงว่ายังไม่ได้กำหนดมูลค่า
  • object →ค่าผสมที่คุณสามารถตั้งค่าคุณสมบัติ (ชื่อตำแหน่ง) ที่แต่ละค่ามีค่าของตัวเองประเภทใดก็ได้ ออบเจกต์เขียนด้วยเครื่องหมายปีกกา {} เป็นชื่อ: คู่ "value" คั่นด้วยเครื่องหมายจุลภาค
  • var car = {Name : "Ford", Model : 2016, Color : "blue"}
    

JavaScript มีtypeof”ตัวดำเนินการ “ ซึ่งช่วยให้เราตรวจสอบค่าและประเภทของมัน:

ตัวtypeofดำเนินการจะส่งคืนสตริงเสมอ

ตัวอย่างที่แสดงการระบุประเภทข้อมูล JS โดยใช้typeofตัวดำเนินการ:

var a;                       // declaring JavaScript Variable


console.log(typeof a);	      // "undefined" 
                              //(Because a is declared, but not yet initialized)

a = "42";                         
console.log(typeof a);	      // "string"

a = 1000;
console.log(typeof a);	      // "number"

a = false;
console.log(typeof a);	      // "boolean"

a = null;
console.log(typeof a);	      // "object"
                              // This is a long-standing bug in JS, returns object instead of null

a = undefined;
console.log(typeof a);	      // "undefined"

a = { car : "Ford" };
console.log((typeof a);	      // "object"

typeof Symbol()              // "symbol"

สิ่งนี้ทำให้ชัดเจนว่าทำไมค่าใน JS เท่านั้นที่มีประเภท & ตัวแปรเป็นเพียงคอนเทนเนอร์สำหรับค่าเหล่านั้น

เคล็ดลับ: “ไม่ได้กำหนด” และ “ไม่ได้ประกาศ” นั้นแตกต่างกัน

นักพัฒนาหลายคนจะถือว่า"ไม่ได้กำหนด"และ"ไม่ได้ประกาศ" เป็นสิ่งเดียวกันโดยประมาณ แต่ใน JavaScript นั้นแตกต่างกัน

  1. undefined-> ค่าที่ตัวแปรประกาศสามารถเก็บได้
  2. "Undeclared" หมายถึงตัวแปรที่ไม่เคยถูกประกาศ
  1. ในข้อความแสดงข้อผิดพลาด (“ReferenceError: b ไม่ได้กำหนด”)
  2. ในการคืนค่าของtypeofซึ่ง"undefined"สำหรับทั้งสองกรณี — ตัวแปรที่ประกาศแต่ไม่ได้กำหนดค่าเริ่มต้น และตัวแปรไม่ได้ประกาศตัวเอง
  3. //Error Messages----------------------------------------------------
    var a;
    console.log(a);               // "undefined" 
    console.log(b);              // ReferenceError: b is not defined
    // above Reference error doesn't means that b is undefined, here b is undeclared
    
    
    // Type Of----------------------------------------------------------
    var a;
    console.log(typeof a);     // "undefined"
    console.log(typeof b);    // "undefined"
    //no error thrown when we executed typeof b, even though b is undeclared variable
    

JS Engine ไม่ยืนยันว่าตัวแปรจะเก็บค่าของประเภทเริ่มต้นเดียวกันกับที่เริ่มต้นเสมอ ตัวแปร ในหนึ่งคำสั่งมอบหมาย สามารถเก็บ a stringและอีกอันถือ a numberและอื่นๆ

var a = 42;
console.log(typeof a); // "number"

a = true;
console.log(typeof a); // "boolean"

ขอบคุณที่อ่าน :) แค่นั้นแหละ ฉันหวังว่าคุณจะชอบบทความนี้

ฉันจะเขียนถึงใคร

เป็นเพียงผู้เรียนที่อยากรู้อยากเห็น ผู้รักการพัฒนาเว็บไซต์ และได้พัฒนาเว็บไซต์ไม่กี่แห่งโดยใช้เทมเพลตต่างๆ โดยใช้ React (ตั้งแต่เริ่มต้น) เช่นกัน ส่วนใหญ่เป็นโครงการส่วนบุคคลหรือเว็บไซต์ชมรมของวิทยาลัยตั้งแต่ 3-4 ปีที่ผ่านมา ในระยะสั้น ฉันได้ทำงานกับ React, JavaScript, CSS & HTML และยังคงเรียนรู้สิ่งใหม่ๆ ทุกวัน!

อย่าลังเลที่จะติดต่อเราหากคุณต้องการพูดคุยเรื่องที่เกี่ยวข้อง

ฉันยินดีและมีความสุขหากคุณส่งข้อเสนอแนะและข้อเสนอแนะอันมีค่าของคุณ คำแนะนำของคุณสำคัญมาก!!

คุณสามารถติดต่อฉันได้ที่นี่ -
LinkedIn:
https://www.linkedin.com/in/itaniyagupta/

บทความก่อนหน้านี้ในซีรีส์ เข้าถึงด้านล่าง :

1. รู้เบื้องต้นเกี่ยวกับจาวาสคริปต์https:///@itaniyagupta/1-introduction-to-javascript-b518204f1fa6