ล่าสุดการพัฒนาเว็บบทเรียน
×

JS เกี่ยวกับการสอน

JS บ้าน JS บทนำ JS สถานที่ที่จะ JS ส่งออก JS วากยสัมพันธ์ JS งบ JS ความคิดเห็น JS ตัวแปร JS ผู้ประกอบการ JS คณิตศาสตร์ JS การมอบหมาย JS ชนิดข้อมูล JS ฟังก์ชั่น JS วัตถุ JS ขอบเขต JS เหตุการณ์ JS เงื่อนไข JS วิธีสตริง JS เบอร์ JS วิธีการจำนวน JS คณิตศาสตร์ JS วันที่ JS รูปแบบวันที่ JS วันวิธีการ JS แถว JS วิธีการอาร์เรย์ JS booleans JS เปรียบเทียบ JS เงื่อนไข JS สวิตซ์ JS ห่วง For JS ในขณะที่ห่วง JS หยุด JS ประเภทการแปลง JS นิพจน์ทั่วไป JS ข้อผิดพลาด JS แก้จุดบกพร่อง JS hoisting JS โหมดที่เข้มงวด JS คู่มือสไตล์ JS ปฏิบัติที่ดีที่สุด JS ข้อผิดพลาด JS ประสิทธิภาพ JS คำสงวน JS JSON

JS ฟอร์ม

แบบฟอร์มการตรวจสอบ รูปแบบ API

JS วัตถุ

นิยามวัตถุ คุณสมบัติของวัตถุ วิธีการของวัตถุ ต้นแบบวัตถุ

JS ฟังก์ชั่น

นิยามฟังก์ชั่น ค่าฟังก์ชัน ฟังก์ชั่นการภาวนา ปิดฟังก์ชั่น

JS HTML DOM

DOM แนะนำ DOM วิธีการ DOM เอกสาร DOM องค์ประกอบ DOM HTML DOM CSS DOM ภาพเคลื่อนไหว DOM เหตุการณ์ DOM EventListener DOM การเดินเรือ DOM โหนด DOM Nodelist

JS เบราว์เซอร์ BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS ตัวอย่าง

JS ตัวอย่าง JS HTML DOM JS HTML อินพุต JS HTML วัตถุ JS HTML เหตุการณ์ JS เบราว์เซอร์ JS ทดสอบ JS สรุป

JS คู่มืออ้างอิง

JavaScript วัตถุ HTML DOM วัตถุ


 

JavaScriptปฏิบัติที่ดีที่สุด


หลีกเลี่ยงตัวแปรทั่วโลกหลีกเลี่ยงการ new ให้หลีกเลี่ยง == หลีกเลี่ยง eval()


หลีกเลี่ยงตัวแปรทั่วโลก

ลดการใช้ตัวแปรโลก

ซึ่งรวมถึงข้อมูลทุกชนิดวัตถุและฟังก์ชั่น

ตัวแปรทั่วโลกและฟังก์ชั่นสามารถเขียนทับโดยสคริปต์อื่น ๆ

ใช้ตัวแปรท้องถิ่นแทนและเรียนรู้วิธีการใช้ การปิด


มักจะประกาศตัวแปรท้องถิ่น

ตัวแปรทั้งหมดที่ใช้ในการทำงานควรได้รับการประกาศให้เป็นตัวแปรท้องถิ่น

ตัวแปรท้องถิ่นจะต้องประกาศกับ var คำหลักมิฉะนั้นพวกเขาจะกลายเป็นตัวแปรทั่วโลก

โหมดเข้มงวดไม่อนุญาตให้มีตัวแปรที่ไม่ได้ประกาศ


การประกาศบน

มันเป็นวิธีการเข้ารหัสที่ดีที่จะนำการประกาศทั้งหมดที่ด้านบนของสคริปต์หรือฟังก์ชั่นแต่ละ

นี้จะ:

  • ให้ทำความสะอาดรหัส
  • ให้เป็นสถานที่เดียวที่จะมองหาตัวแปรท้องถิ่น
  • ทำให้มันง่ายที่จะหลีกเลี่ยงที่ไม่พึงประสงค์ (นัย) ตัวแปรทั่วโลก
  • ลดความเป็นไปได้ของที่ไม่พึงประสงค์อีกครั้งการประกาศ
// Declare at the beginning
var firstName, lastName, price, discount, fullPrice;

// Use later
firstName = "John";
lastName = "Doe";

price = 19.90;
discount = 0.10;

fullPrice = price * 100 / discount;

นอกจากนี้ยังไปสำหรับตัวแปรห่วง:

// Declare at the beginning
var i;

// Use later
for (i = 0; i < 5; i++) {

โดยค่าเริ่มต้น JavaScript ย้ายประกาศทั้งหมดไปด้านบน (ยกจาวาสคริปต์)


เริ่มต้นตัวแปร

มันเป็นวิธีการเข้ารหัสที่ดีที่จะเริ่มต้นตัวแปรเมื่อคุณประกาศให้

นี้จะ:

  • ให้ทำความสะอาดรหัส
  • ให้เป็นสถานที่เดียวที่จะเริ่มต้นตัวแปร
  • หลีกเลี่ยงไม่ได้กำหนดค่า
// Declare and initiate at the beginning
var firstName = "",
    lastName = "",
    price = 0,
    discount = 0,
    fullPrice = 0,
    myArray = [],
    myObject = {};

เริ่มต้นตัวแปรให้ความคิดของวัตถุประสงค์การใช้งาน (และตั้งใจชนิดข้อมูล)


ไม่เคยประกาศตัวเลขสตริงหรือวัตถุบูลีน

มักจะปฏิบัติต่อตัวเลขสตริงหรือ booleans เป็นค่าดั้งเดิม ไม่ได้เป็นวัตถุ

ประกาศประเภทนี้เป็นวัตถุช้าลงความเร็วในการทำงานและผลิตผลข้างเคียงที่น่ารังเกียจ:

ตัวอย่าง

var x = "John";             
var y = new String("John");
(x === y) // is false because x is a string and y is an object.
ลองตัวเอง»

หรือแม้แต่เลว:

ตัวอย่าง

var x = new String("John");             
var y = new String("John");
(x == y) // is false because you cannot compare objects.
ลองตัวเอง»

ไม่ใช้ new Object()

  • ใช้ {} แทน new Object()
  • ใช้ "" แทน new String()
  • ใช้ 0 แทน new Number()
  • ใช้ false แทน new Boolean()
  • ใช้ [] แทน new Array()
  • ใช้ /()/ แทน new RegExp()
  • ใช้ function (){} แทนการ new Function()

ตัวอย่าง

var x1 = {};           // new object
var x2 = "";           // new primitive string
var x3 = 0;            // new primitive number
var x4 = false;        // new primitive boolean
var x5 = [];           // new array object
var x6 = /()/;         // new regexp object
var x7 = function(){}; // new function object
ลองตัวเอง»

ระวังของการแปลงชนิดอัตโนมัติ

ระวังว่าตัวเลขสามารถบังเอิญถูกแปลงเป็นสตริงหรือ NaN (ไม่ใช่ตัวเลข)

JavaScript จะพิมพ์อย่างหลวม ๆ ตัวแปรสามารถมีชนิดข้อมูลที่แตกต่างกันและตัวแปรสามารถเปลี่ยนชนิดข้อมูลที่:

ตัวอย่าง

var x = "Hello";     // typeof x is a string
x = 5;               // changes typeof x to a number
ลองตัวเอง»

เมื่อทำดำเนินการทางคณิตศาสตร์, JavaScript สามารถแปลงตัวเลขเป็นสตริง:

ตัวอย่าง

var x = 5 + 7;       // x.valueOf() is 12,  typeof x is a number
var x = 5 + "7";     // x.valueOf() is 57,  typeof x is a string
var x = "5" + 7;     // x.valueOf() is 57,  typeof x is a string
var x = 5 - 7;       // x.valueOf() is -2,  typeof x is a number
var x = 5 - "7";     // x.valueOf() is -2,  typeof x is a number
var x = "5" - 7;     // x.valueOf() is -2,  typeof x is a number
var x = 5 - "x";     // x.valueOf() is NaN, typeof x is a number
ลองตัวเอง»

ลบสตริงจากสตริงที่ไม่ก่อให้เกิดข้อผิดพลาด แต่ผลตอบแทนที่ NaN (ไม่ใช่ตัวเลข):

ตัวอย่าง

"Hello" - "Dolly"    // returns NaN
ลองตัวเอง»

ใช้ === เปรียบเทียบ

== ดำเนินการเปรียบเทียบเสมอแปลง (ประเภทการจับคู่) ก่อนที่จะเปรียบเทียบ

=== เปรียบเทียบกองกำลังผู้ประกอบการของค่าและประเภท:

ตัวอย่าง

0 == "";        // true
1 == "1";       // true
1 == true;      // true

0 === "";       // false
1 === "1";      // false
1 === true;     // false
ลองตัวเอง»

ใช้ค่าเริ่มต้นพารามิเตอร์

หากฟังก์ชั่นเรียกว่ามีการโต้แย้งที่ขาดหายไปค่าของอาร์กิวเมนต์ที่หายไปมีการตั้งค่า undefined

ค่าไม่ได้กำหนดสามารถทำลายรหัสของคุณ มันเป็นนิสัยที่ดีในการกำหนดค่าเริ่มต้นการขัดแย้ง

ตัวอย่าง

function myFunction(x, y) {
    if (y === undefined) {
        y = 0;
    }
}
ลองตัวเอง»

อ่านข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ฟังก์ชั่นและข้อโต้แย้งที่ ค่าฟังก์ชัน


จบสวิทช์ของคุณด้วยค่าเริ่มต้น

มักจะจบงบของคุณด้วยสวิทช์เริ่มต้น แม้ว่าคุณจะคิดว่าจะมีความต้องการมันไม่มี

ตัวอย่าง

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() ฟังก์ชั่นที่ใช้ในการเรียกใช้ข้อความเป็นรหัส ในเกือบทุกกรณีก็ไม่ควรมีความจำเป็นที่จะใช้มัน

เพราะจะช่วยให้รหัสที่กำหนดเองจะทำงานก็ยังแสดงให้เห็นถึงปัญหาด้านความปลอดภัย