JavaScript แนวทางที่ดีที่สุด
- หน้าก่อนหน้า แนวทางรูปแบบ JS
- หน้าต่อไป ข้อผิดพลาด JS
หลีกเลี่ยงตัวแปรทั่วไปและnew
、=====
、eval()
หลีกเลี่ยงตัวแปรทั่วไป
ใช้ตัวแปรทั่วไปให้น้อยที่สุด
มีการรวมทั้งทุกชนิดของข้อมูล ออบเจกต์และฟังก์ชัน
ตัวแปรทั่วไปและฟังก์ชันสามารถถูกทำรุกโดยสคริปต์อื่น
ใช้ตัวแปรท้องถิ่นแทน และเรียนรู้วิธีการใช้โคลบ。
ประกาศตัวแปรท้องถิ่นเสมอ
ตัวแปรที่ใช้ในฟังก์ชันควรประกาศเป็นตัวแปรท้องถิ่นท้องถิ่นตัวแปร
ตัวแปรท้องถิ่นจำเป็นผ่าน var ใช้คำเรียกในการประกาศ ไม่เช่นนั้นนั้นจะกลายเป็นตัวแปรทั่วไป
โมดูลกำหนดความหมายที่ไม่ได้ประกาศไม่อนุญาต
ประกาศด้านบน
ประสบการณ์ที่ดีในการเขียนรหัสคือประกาศทุกอย่างที่ด้านบนของแต่ละบล็อคหรือฟังก์ชัน
ข้อดีของการกระทำนี้คือ:
- ได้รับรหัสที่เรียบร้อยขึ้น
- ให้ที่ดีสำหรับหาตัวแปรท้องถิ่น
- ง่ายต่อการป้องกันตัวแปรทั่วไปที่ไม่จำเป็น
- ลดโอกาสการประกาศใหม่ที่ไม่จำเป็น
// ประกาศด้านบน var firstName, lastName, price, discount, fullPrice; // ใช้ในภายหลัง firstName = "Bill"; lastName = "Gates"; price = 19.90; discount = 0.10; fullPrice = price * 100 / discount;
ยังสามารถใช้สำหรับตัวแปรวนรอบ:
// ประกาศด้านบน var i; // ใช้ในภายหลัง for (i = 0; i < 5; i++) {
โดยมาตรฐาน JavaScript จะย้ายการประกาศทุกอย่างขึ้นไปด้านบน (JavaScript hoisting)
เริ่มต้นตัวแปร
มันเป็นข้อดีที่คุณจะกำหนดตัวแปรในขณะที่คุณประกาศตัวแปร
ข้อดีของการกระทำนี้คือ:
- รหัสที่เรียบร้อย
- กำหนดตัวแปรในตำแหน่งที่แยกต่างกัน
- หลีกเลี่ยงค่าที่ไม่มีความหมาย
// ประกาศและกำหนดตัวแปรในต้น var firstName = "", lastName = "", price = 0, discount = 0, fullPrice = 0, myArray = [], myObject = {};
การกำหนดตัวแปรให้เริ่มต้นเป็นทางเลือกที่ช่วยเราในการตระหนักถึงการใช้งานคาดหวังและประเภทข้อมูลที่คาดหวัง
โปรดไม่ใช้กำหนดตัวเลข ตัวอักษร หรือตัวเลขปริมาณเป็นวัตถุ
โปรดมองให้ตัวเลข ตัวอักษร หรือตัวเลขปริมาณเป็นข้อมูลปริมาณ ไม่ใช่วัตถุ
ถ้ากำหนดประเภทข้อมูลเป็นวัตถุ อาจทำให้การทำงานเร่งเร้นและมีผลข้างเคียงที่ไม่พึงประสงค์:
ตัวอย่าง
var x = "Bill"; var y = new String("Bill"); (x === y) // ผลลัพธ์คือ false ตรงที่ x คือตัวอักษร และ y คือวัตถุ
หรือแม้กระทั่งแย่กว่านั้น:
ตัวอย่าง
var x = new String("Bill"); var y = new String("Bill"); (x == y) // ผลลัพธ์คือ false ตรงที่คุณไม่สามารถเปรียบเทียบวัตถุได้
โปรดไม่ใช้ new Object()
- โปรดใช้ {} แทน new Object()
- โปรดใช้ "" แทน new String()
- โปรดใช้ 0 แทน new Number()
- โปรดใช้ false แทน new Boolean()
- โปรดใช้ [] แทน new Array()
- โปรดใช้ /()/ แทน new RegExp()
- โปรดใช้ function (){} แทน new Function()
ตัวอย่าง
var x1 = {}; // ก่อตั้งวัตถุใหม่ var x2 = ""; // ก่อตั้งตัวเลขแอคตูเริ่มใหม่ var x3 = 0; // ก่อตั้งตัวเลขจำนวนใหม่ var x4 = false; // ก่อตั้งตัวเลขปริมาณเปลี่ยนใหม่ var x5 = []; // ก่อตั้งวัตถุแอร์เรย์ใหม่ var x6 = /()/; // ก่อตั้งแอ็คทูเริ่มใหม่ var x7 = function(){}; // ก่อตั้งวัตถุฟังก์ชันใหม่
ตระหนักถึงการเปลี่ยนแปลงประเภทข้อมูลอัตโนมัติ
โปรดตระหนักว่าตัวเลขอาจถูกเปลี่ยนเป็นตัวอักษรโดยอุบัติเหตุหรือ NaN
(Not a Number)。
JavaScript มีชนิดที่เปิดด่วน。ตัวแปรสามารถบรรจุข้อมูลประเภทต่าง ๆ และตัวแปรสามารถเปลี่ยนประเภทข้อมูลของตัวเองได้:
ตัวอย่าง
var x = "Hello"; // typeof x คือ string x = 5; // แปลง typeof x ให้เป็น numeric
ถ้าทำการคำนวณทาง matematic JavaScript สามารถแปลงตัวเลขเป็นข้อความ
ตัวอย่าง
var x = 5 + 7; // x.valueOf() คือ 12, typeof x คือ numeric var x = 5 + "7"; // x.valueOf() คือ 57, typeof x คือ string var x = "5" + 7; // x.valueOf() คือ 57, typeof x คือ string var x = 5 - 7; // x.valueOf() คือ -2, typeof x คือ numeric var x = 5 - "7"; // x.valueOf() คือ -2, typeof x คือ numeric var x = "5" - 7; // x.valueOf() คือ -2, typeof x คือ numeric var x = 5 - "x"; // x.valueOf() คือ NaN, typeof x คือ numeric
การหักข้อความจากข้อความ จะไม่ทำให้เกิดข้อผิดพลาดแต่จะคืน NaN
(Not a Number):
ตัวอย่าง
"Hello" - "Dolly" // คืน NaN
ใช้ === สำหรับเปรียบเทียบ
==
ตัวอักษรเปรียบเทียบจะทำการแปลงประเภทก่อนที่จะเปรียบเทียบ (เพื่อที่จะตรงกับประเภท)
=====
ตัวอักษรที่ใช้เปรียบเทียบจะบังคับทำการเปรียบเทียบค่าและประเภทของตัวแปร
ตัวอย่าง
0 == ""; // true 1 == "1"; // true 1 == true; // true 0 === ""; // false 1 === "1"; // false 1 === true; // false
ใช้ Parameter Defaults
ถ้าขาดตัวแปรในการเรียกฟังก์ชัน ค่าของตัวแปรที่ขาดจะถูกตั้งค่าเป็น undefined
。
undefined
ค่าจะทำลายรหัสที่คุณเขียน。มีข้อดีในการกำหนดค่าเริ่มต้นสำหรับตัวแปร
ตัวอย่าง
function myFunction(x, y) { if (y ยังไม่ถูกกำหนด) { y = 0; } }
โปรดใช้พารามิเตอร์ฟังก์ชันอ่านบทดังกล่าวเพื่อได้รับรายละเอียดเกี่ยวกับพารามิเตอร์ฟังก์ชัน
default ที่จะสิ้นสุด switch
ใช้ default
ใช้เพื่อที่จะสิ้นสุด switch
ประโยค ถึงแม้ว่าคุณจะคิดว่าไม่จำเป็นต้องมีมันเช่นนั้น
ตัวอย่าง
switch (new Date().getDay()) { case 0: day = "Sunday"; break; case 1: day = "Monday"; break; case 2: day = "Tuesday"; break; case 3: day = "Wednesday"; break; case 4: day = "Thursday"; break; case 5: day = "Friday"; break; case 6: day = "Saturday"; break; default: day = "Unknown"; }
หลีกเลี่ยงการใช้ eval()
eval()
ฟังก์ชันใช้ในการใช้ตัวอักษรเป็นรหัส ในหลายๆ ครั้งมันไม่จำเป็นต้องใช้
เพราะมันอนุญาตให้รันรหัสอย่างไม่จำกัด มันยังหมายความว่ามันมีปัญหาความปลอดภัยด้วย
- หน้าก่อนหน้า แนวทางรูปแบบ JS
- หน้าต่อไป ข้อผิดพลาด JS