Basic javascript - Variables
การประกาศตัวแปรในภาษา Javascript ไม่ต้องระบุประเภทของตัวแปร ทำได้สามวิธีคือ
- var
- let
- const
var
เป็นการประกาศตัวแปรทั่วๆไป เช่นเดียวกับการประกาศตัวแปรในภาษาอื่น
test("Declare number variable", function(){
var number = 100
expect(number).toEqual(100)
})
test("Declare string variable", function(){
var text = "วันหนึ่งฉันเดินเข้าป่า"
expect(text).toEqual("วันหนึ่งฉันเดินเข้าป่า")
})
สามารถถูกกำหนดค่าใหม่ได้
test("Reassign number", function(){
var number = 100
expect(number).toEqual(100)
number = 999
expect(number).toEqual(999)
})
สามารถถูกกำหนดค่าใหม่โดยที่ชนิดของตัวแปรเป็นอย่างอื่นได้
test("Reassign number with string", function(){
var number = 100
expect(number).toEqual(100)
number = "ไม่กินต้มไก่"
expect(number).toEqual("ไม่กินต้มไก่")
})
let
คล้ายกับการประกาศตัวแปรโดยการใช้ var มาก จะต่างกันในเรื่องของ scope ซึ่งจะอธิบายในภายหลัง
test("Declare number variable using let", function(){
let number = 100
expect(number).toEqual(100)
})
test("Declare string variable using let", function(){
let text = "วันหนึ่งฉันเดินเข้าป่า"
expect(text).toEqual("วันหนึ่งฉันเดินเข้าป่า")
})
สามารถถูกกำหนดค่าใหม่ได้
test("Reassign number using let", function(){
let number = 1500
expect(number).toEqual(1500)
number = 11
expect(number).toEqual(11)
})
สามารถถูกกำหนดค่าใหม่โดยที่ชนิดของตัวแปรเป็นอย่างอื่นได้
test("Reassign number with string using let", function(){
let number = 20000
expect(number).toEqual(20000)
number = "ร้อยล้านวิว"
expect(number).toEqual("ร้อยล้านวิว")
})
const
ตัวแปรแบบ const ย่อมาจาก constant แปลว่า ค่าคงที่ ซึ่งหมายความว่า เราไม่สามารถแก้ไขค่าของตัวแปรหลังจากประกาศไปแล้วได้ ในปัจจุบันนิยมเรียกว่า immutable
ใช้งานแบบปกติเหมือนกับ var
test("Declare number using const", function(){
const fixNumber = 99
expect(fixNumber).toEqual(99)
})
test("Declare string using const", function(){
const fixText = "ไม่มีวันตาย"
expect(fixText).toEqual("ไม่มีวันตาย")
})
แต่จะไม่สามารถกำหนดค่าใหม่กับตัวแปรแบบ const ได้
test("Can not reassign to const variable", function(){
const fixNumber = 99
expect(fixNumber).toEqual(99)
expect(function() {
fixNumber = 1010
}).toThrow(TypeError)
})