# Variable

## **ตัวแปร (Variable)**

&#x20;         **ตัวแปร (variable)** คือ ชื่อหรือสัญลักษณ์ที่ใช้อ้างอิงถึงข้อมูลที่ถูกเก็บในหน่วยความจำ โดยการใช้ชื่อของตัวแปรสำหรับอ้างถึงข้อมูลดังกล่าว เช่น การอ่านค่าในตัวแปร หรือการเปลี่ยนแปลงค่าของตัวแปรเป็นค่าใหม่

&#x20;         ในภาษา JavaScript จะมีการประกาศตัวแปรอยู่ 4 วิธี คือ การใช้  let, const, var หรือจะไม่ใช้อะไรเลยก็ทำได้เช่นกัน โดยที่

1. **let** คือ การประกาศตัวแปรสำหรับใช้เฉพาะใน scope นั้นหรือเฉพาะใน block นั้น ๆ
2. **const** คือ การประกาศตัวแปรแบบค่าคงที่หรือพูดง่าย ๆ คือ แบบ read-only
3. **var** คือ การประกาศตัวแปรสำหรับใช้ภายในโค้ด ในส่วนที่ถูกรันในส่วนนั้น ๆ ซึ่งอาจหมายถึงทั้ง function หรือทั้งไฟล์เลยก็ได้
4. **ไม่ระบุชื่อ** คือ การประกาศแบบ global นั่นเอง

### **Global & Local Variable**

&#x20;         **Global variable** คือ variable ที่ใช้ได้ทุกจุดในโค้ดนั้น ๆ

&#x20;                   ตำแหน่งในการประกาศ : ด้านบนสุดของโค้ด (เหนือ screen)&#x20;

&#x20;         **Local variable** คือ variable ที่ใช้ได้แค่เฉพาะในพื้นที่ที่ประกาศ&#x20;

&#x20;                   ตำแหน่งในการประกาศ : พื้นที่ในปีกกา

{% hint style="danger" %}
local variable จะถูกแบ่งด้วยปีกกา โดย variable ประกาศไว้ในปีกกาไหนก็จะใช้ได้แค่เฉพาะภายในปีกกานั้น ๆ (รวมไปถึงปีกกาย่อย ๆ ในปีกกาด้วย)
{% endhint %}

```javascript
function fnct(){
    if (condition) {
    let someVariable;

        if (condition) {
        //ใช้ someVariable ##ได้##
        }
    //ใช้ someVariable ##ได้##
    }

    if (condition) {
    // ใช้ someVariable ##ไม่ได้##
    }
    // ใช้ someVariable ##ไม่ได้##
}
```

###

### **การประกาศตัวแปรที่ดี**

**คุณสมบัติการตั้งชื่อตัวแปรที่ดี**

* ตั้งชื่อให้สอดคล้องกับการใช้งาน
* ขึ้นต้นตัวอักษรแรกด้วยตัวพิมพ์เล็ก เพื่อแยกกับชื่อ Class เป็นธรรมเนียมของการเขียนโค้ด
* ถ้าตัวแปรมีหลายคำจะขึ้นต้นคำต่อไปด้วยตัวพิมใหญ่ ซึ่งเป็นธรรมเนียมเช่นกัน แบบนี้จะเรียกว่า Camel case หรือว่าหลังอูฐนั่นเอง

&#x20;  **Example ที่ดี**

> **`let playerHealth;`**&#x20;
>
> **`const playerSpeed;`**

&#x20; **Example ที่ไม่ดี**

> **`let ph;`**&#x20;
>
> **`const ps;`**

{% hint style="info" %}
ชื่อตัวแปรสามารถเขียนย่อได้ (ถ้าไม่อยากเขียนยาว) แต่ต้องให้เข้าใจได้ไม่ยากด้วย ว่าตัวแปรนั้นมันคืออะไร เช่น randNum (randomNumber)
{% endhint %}

## แหล่งอ้างอิง 📑

{% embed url="<https://shorturl.asia/EpsvS>" %}
