บทแนะนำนี้จะแนะนำเวิร์กโฟลว์พื้นฐานสำหรับการแก้ไขข้อบกพร่องของ JavaScript ในเครื่องมือสำหรับนักพัฒนาเว็บ อ่านแล้ว เปิด หรือดูวิดีโอบทแนะนำนี้ในเวอร์ชันวิดีโอ
จำลองข้อบกพร่อง
การค้นหาชุดการดำเนินการที่ทำให้เกิดข้อบกพร่องอย่างสม่ำเสมอเป็นขั้นตอนแรกเสมอ การแก้ไขข้อบกพร่อง
- เปิดการสาธิตนี้ในแท็บใหม่
- กรอก
5
ในช่องตัวเลข 1 - กรอก
1
ในช่อง ตัวเลข 2 - คลิกเพิ่มหมายเลข 1 และหมายเลข 2 ป้ายกำกับด้านล่างปุ่มเขียนว่า
5 + 1 = 51
ผลลัพธ์ ควรเป็น6
นี่คือข้อบกพร่องที่คุณกำลังแก้ไข
ในตัวอย่างนี้ ผลลัพธ์ของ 5 + 1 คือ 51 ค่านี้ควรเป็น 6
ทำความคุ้นเคยกับ UI ของแผงแหล่งที่มา
DevTools มีเครื่องมือมากมายที่แตกต่างกันสำหรับงานต่างๆ เช่น การเปลี่ยน CSS และการทำโปรไฟล์หน้าเว็บ ประสิทธิภาพการโหลด และตรวจสอบคำขอของเครือข่าย คุณจะแก้ไขข้อบกพร่องในแผงแหล่งที่มา JavaScript
เปิดเครื่องมือสำหรับนักพัฒนาเว็บและไปที่แผงแหล่งที่มา
แผงแหล่งที่มามี 3 ส่วนดังนี้
- แท็บหน้าที่มีโครงสร้างไฟล์ ทุกไฟล์ที่หน้าเว็บขอจะแสดงที่นี่
- ส่วนตัวแก้ไขโค้ด หลังจากเลือกไฟล์ในแท็บหน้า เนื้อหาของ ไฟล์ดังกล่าวจะแสดงที่นี่
ส่วนโปรแกรมแก้ไขข้อบกพร่อง เครื่องมือต่างๆ สำหรับตรวจสอบ JavaScript ของหน้าเว็บ
หากหน้าต่างเครื่องมือสำหรับนักพัฒนาเว็บกว้าง โดยค่าเริ่มต้น โปรแกรมแก้ไขข้อบกพร่องจะอยู่ทางด้านขวาของตัวแก้ไขโค้ด ในกรณีนี้ แท็บขอบเขตและดูจะรวมเบรกพอยท์ สแต็กการเรียกใช้ และแท็บอื่นๆ เป็นส่วนที่สามารถยุบได้
หยุดโค้ดที่มีเบรกพอยท์ไว้ชั่วคราว
วิธีทั่วไปในการแก้ไขข้อบกพร่องเช่นนี้คือการแทรกคำสั่ง console.log()
จำนวนมาก
ลงในโค้ดเพื่อตรวจสอบค่าต่างๆ ตามที่สคริปต์สั่งดำเนินการ เช่น
function updateLabel() {
var addend1 = getNumber1();
console.log('addend1:', addend1);
var addend2 = getNumber2();
console.log('addend2:', addend2);
var sum = addend1 + addend2;
console.log('sum:', sum);
label.textContent = addend1 + ' + ' + addend2 + ' = ' + sum;
}
เมธอด console.log()
อาจช่วยให้เสร็จงานได้ แต่เบรกพอยท์อาจทำให้เสร็จเร็วขึ้น ต
เบรกพอยท์จะช่วยให้คุณหยุดโค้ดชั่วคราวในระหว่างที่มีการดำเนินการ และตรวจสอบค่าทั้งหมดที่
ช่วงเวลาหนึ่ง เบรกพอยท์มีข้อดีมากกว่าเมธอด console.log()
อยู่บ้าง ดังนี้
- แต่เมื่อใช้
console.log()
คุณจะต้องเปิดซอร์สโค้ดด้วยตนเอง ค้นหาโค้ดที่เกี่ยวข้อง แล้วแทรก คำสั่งconsole.log()
แล้วโหลดหน้านี้ซ้ำเพื่อดูข้อความใน คอนโซล ด้วยเบรกพอยท์ คุณสามารถหยุดการทำงานของโค้ดที่เกี่ยวข้องชั่วคราวโดยไม่ต้องรู้ด้วยซ้ำว่าโค้ดนั้นเป็นอย่างไร ที่มีโครงสร้าง - ในคำสั่ง
console.log()
คุณต้องระบุแต่ละค่าที่ต้องการอย่างชัดแจ้ง ตรวจสอบ เมื่อใช้เบรกพอยท์ เครื่องมือสำหรับนักพัฒนาเว็บจะแสดงค่าของตัวแปรทั้งหมด ณ ขณะนั้น บางครั้งอาจมีตัวแปรที่ส่งผลต่อโค้ดซึ่งคุณไม่รู้ตัว
กล่าวโดยสรุป เบรกพอยท์จะช่วยให้คุณค้นหาและแก้ไขข้อบกพร่องได้เร็วกว่าเมธอด console.log()
ถ้าคุณย้อนกลับไป 1 ก้าวและนึกถึงวิธีการทำงานของแอป คุณก็น่าจะเดาอย่างมีเหตุผลว่า
ผลรวมที่ไม่ถูกต้อง (5 + 1 = 51
) ได้รับการคำนวณใน Listener เหตุการณ์ click
ที่เชื่อมโยงกับ
ปุ่มเพิ่มหมายเลข 1 และหมายเลข 2 ดังนั้น คุณอาจต้องหยุดโค้ดชั่วคราว
ที่ Listener click
ดำเนินการ เบรกพอยท์ของ Listener เหตุการณ์ช่วยให้คุณทำสิ่งเหล่านี้ได้
- ในส่วนโปรแกรมแก้ไขข้อบกพร่อง ให้คลิกเบรกพอยท์ของ Listener เหตุการณ์เพื่อขยาย เครื่องมือสำหรับนักพัฒนาเว็บจะแสดงรายการหมวดหมู่เหตุการณ์ที่ขยายได้ เช่น ภาพเคลื่อนไหว และ คลิปบอร์ด
- ข้างหมวดหมู่เหตุการณ์เมาส์ ให้คลิก arrow_right ขยาย เครื่องมือสำหรับนักพัฒนาเว็บจะแสดงรายการเหตุการณ์เมาส์ เช่น click และ mousedown แต่ละกิจกรรมจะมีช่องทําเครื่องหมายอยู่ถัดจากกิจกรรมนั้น
เลือกช่องทำเครื่องหมายคลิก ขณะนี้เครื่องมือสำหรับนักพัฒนาเว็บได้รับการตั้งค่าให้หยุดชั่วคราวโดยอัตโนมัติเมื่อ
click
ใดก็ตาม Listener เหตุการณ์ดำเนินการกลับไปที่การสาธิต คลิกเพิ่มหมายเลข 1 และหมายเลข 2 อีกครั้ง เครื่องมือสำหรับนักพัฒนาเว็บจะหยุดการสาธิตไว้ชั่วคราวและ ไฮไลต์บรรทัดโค้ดในแผงแหล่งที่มา ควรหยุดเครื่องมือสำหรับนักพัฒนาเว็บไว้ชั่วคราวในบรรทัดนี้ รหัส:
function onClick() {
หากคุณหยุดชั่วคราวสำหรับโค้ดบรรทัดอื่น ให้กด ดำเนินการต่อ ดำเนินการสคริปต์ต่อ จนกว่าคุณจะหยุดชั่วคราวในบรรทัดที่ถูกต้อง
เบรกพอยท์ของ Listener เหตุการณ์เป็นเพียงเบรกพอยท์ประเภทหนึ่งในเครื่องมือสำหรับนักพัฒนาเว็บ ตอนนี้ คุณควรลองสำรวจโฆษณาประเภทต่างๆ เพราะแต่ละประเภทก็จะช่วยคุณแก้ไขข้อบกพร่องที่ต่างกันไปในที่สุด โดยเร็วที่สุดเท่าที่จะทำได้ ดูหยุดโค้ดชั่วคราวด้วยเบรกพอยท์เพื่อดูว่าควรแก้ปัญหาเมื่อใดและอย่างไร ที่ใช้แต่ละประเภท
เลื่อนดูโค้ด
สาเหตุที่พบบ่อยหนึ่งของข้อบกพร่องคือเมื่อสคริปต์ทำงานผิดลำดับ การเลื่อนดูโค้ด ช่วยให้คุณดูการทำงานของโค้ดได้ทีละบรรทัด และทราบตำแหน่งที่แน่นอน ไฟล์กำลังทำงานในลำดับที่แตกต่างจากที่คุณคาดไว้ ลองเลย
ในแผงแหล่งที่มาของเครื่องมือสำหรับนักพัฒนาเว็บ ให้คลิกstep_into เข้าสู่การเรียกใช้ฟังก์ชันถัดไปเพื่อเข้าสู่การเรียกใช้ฟังก์ชัน
onClick()
ทีละบรรทัด เครื่องมือสำหรับนักพัฒนาเว็บจะไฮไลต์โค้ดบรรทัดต่อไปนี้if (inputsAreEmpty()) {
คลิก step_over ข้ามการเรียกใช้ฟังก์ชันถัดไป
เครื่องมือสำหรับนักพัฒนาเว็บจะเรียกใช้
inputsAreEmpty()
โดยไม่ต้องดำเนินการใดๆ สังเกตวิธีที่เครื่องมือสำหรับนักพัฒนาเว็บข้าม โค้ด เนื่องจากประเมินinputsAreEmpty()
เป็น "เท็จ" ดังนั้นบล็อกของคำสั่งif
ของ โค้ดไม่ทำงาน
นั่นเป็นแนวคิดเบื้องต้นในการเขียนโค้ด หากดูโค้ดใน get-started.js
คุณจะสามารถ
เห็นว่าข้อบกพร่องน่าจะอยู่ตรงไหนในฟังก์ชัน updateLabel()
แทนที่จะก้าวผ่านเข้ามา
โค้ดทุกบรรทัด คุณสามารถใช้เบรกพอยท์ประเภทอื่นเพื่อหยุดโค้ดชั่วคราวเมื่อใกล้กับโค้ดที่น่าจะเป็น
ตำแหน่งของข้อบกพร่อง
ตั้งค่าเบรกพอยท์ของบรรทัดโค้ด
เบรกพอยท์ของบรรทัดของโค้ดเป็นเบรกพอยท์ประเภทที่ใช้กันมากที่สุด เมื่อคุณมีบรรทัดที่เฉพาะเจาะจง ที่คุณต้องการหยุดชั่วคราว ให้ใช้เบรกพอยท์บรรทัดของโค้ดดังนี้
ดูโค้ดบรรทัดสุดท้ายใน
updateLabel()
:label.textContent = addend1 + ' + ' + addend2 + ' = ' + sum;
ทางด้านซ้ายของโค้ด คุณจะเห็นหมายเลขบรรทัดของโค้ดบรรทัดเฉพาะนี้ ซึ่ง 32 คลิก 32 เครื่องมือสำหรับนักพัฒนาเว็บจะวางไอคอนสีน้ำเงินไว้ที่ด้านบนของ 32 ซึ่งหมายความว่ามี เบรกพอยท์ของบรรทัดโค้ดในบรรทัดนี้ ตอนนี้เครื่องมือสำหรับนักพัฒนาเว็บจะหยุดชั่วคราวก่อนโค้ดบรรทัดนี้ ดำเนินการแล้ว
คลิก ดำเนินการต่อ ใช้งานสคริปต์ต่อ สคริปต์จะทำงานต่อไปจนถึงบรรทัดที่ 32 ในบรรทัดที่ 29, 30 และ 31 เครื่องมือสำหรับนักพัฒนาเว็บแสดงค่าของ
addend1
,addend2
และsum
ในบรรทัดถัดจากการประกาศ
ในตัวอย่างนี้ เครื่องมือสำหรับนักพัฒนาเว็บจะหยุดชั่วคราวที่เบรกพอยท์บรรทัดของโค้ดในบรรทัดที่ 32
ตรวจสอบค่าตัวแปร
ค่าของ addend1
, addend2
และ sum
ดูน่าสงสัย แล้วตามด้วยเครื่องหมายคำพูด
ซึ่งหมายถึงสตริง นี่คือสมมติฐานที่ดีในการอธิบายสาเหตุของข้อบกพร่อง เริ่มเลย
ก็ถึงเวลาที่จะรวบรวมข้อมูลเพิ่มเติม เครื่องมือสำหรับนักพัฒนาเว็บมีเครื่องมือจำนวนมากสำหรับการตรวจสอบตัวแปร
วิธีที่ 1: ตรวจสอบขอบเขต
เมื่อคุณหยุดโค้ดบรรทัดหนึ่งไว้ชั่วคราว แท็บขอบเขตจะแสดงตัวแปรภายในและตัวแปรร่วม จะปรากฏขึ้น ณ จุดนี้ของการดำเนินการ พร้อมกับค่าของแต่ละตัวแปร นอกจากนี้ยังแสดงตัวแปรการปิด ที่เกี่ยวข้อง เมื่อคุณไม่ได้หยุดโค้ดบรรทัดหนึ่งไว้ชั่วคราว แท็บขอบเขตจะว่างเปล่า
ดับเบิลคลิกค่าตัวแปรเพื่อแก้ไข
วิธีที่ 2: นิพจน์การดู
แท็บดูช่วยให้คุณสามารถตรวจสอบค่าของตัวแปรเมื่อเวลาผ่านไป รับชมไม่ได้จำกัดเพียงตัวแปรเท่านั้น คุณจัดเก็บ JavaScript ที่ถูกต้องได้ทุกรายการ ในแท็บดู
ลองเลย
- คลิกแท็บดู
- คลิกเพิ่ม เพิ่มนิพจน์การดู
- พิมพ์
typeof sum
- กด Enter เครื่องมือสำหรับนักพัฒนาเว็บแสดง
typeof sum: "string"
ค่าทางด้านขวาของเครื่องหมายโคลอนคือค่า ผลลัพธ์นิพจน์
ภาพหน้าจอนี้แสดงแท็บดู (ขวาล่าง) หลังจากสร้างนาฬิกา typeof sum
เท่านั้น
น่าสงสัยว่า sum
ได้รับการประเมินเป็นสตริง ทั้งที่ควรเป็นตัวเลข คุณยืนยันเรียบร้อยแล้ว
ว่านี่คือสาเหตุของข้อบกพร่อง
วิธีที่ 3: คอนโซล
นอกจากการดูข้อความ console.log()
แล้ว คุณยังใช้ Console เพื่อประเมินสถานการณ์
คำสั่ง JavaScript ในแง่ของการแก้ไขข้อบกพร่อง คุณสามารถใช้ Console เพื่อทดสอบการแก้ไขที่เป็นไปได้
สำหรับข้อบกพร่อง ลองเลย
- หากไม่มีลิ้นชักคอนโซลเปิดอยู่ ให้กด Escape เพื่อเปิด ซึ่งจะเปิดขึ้นที่ด้านล่างของ หน้าต่างเครื่องมือสำหรับนักพัฒนาเว็บ
- พิมพ์
parseInt(addend1) + parseInt(addend2)
ในคอนโซล ข้อความนี้ได้ผลเนื่องจากคุณ หยุดชั่วคราวในโค้ดบรรทัดหนึ่งที่addend1
และaddend2
อยู่ในขอบเขต - กด Enter DevTools จะประเมินคำสั่งและพิมพ์
6
ซึ่งเป็นผลลัพธ์ที่คุณคาดไว้ เพื่อสาธิตให้คุณดู
ภาพหน้าจอนี้แสดงลิ้นชักคอนโซลหลังจากประเมินผล parseInt(addend1) + parseInt(addend2)
ใช้การแก้ไข
คุณพบการแก้ไขข้อบกพร่องแล้ว ที่เหลือก็แค่ลองแก้ไขโค้ดและ เรียกใช้การสาธิตอีกครั้ง ทั้งนี้ คุณไม่จำเป็นต้องออกจากเครื่องมือสำหรับนักพัฒนาเว็บเพื่อใช้การแก้ไข คุณสามารถแก้ไขโค้ด JavaScript ได้ ภายใน UI เครื่องมือสำหรับนักพัฒนาเว็บโดยตรง ลองเลย
- คลิก ดำเนินการต่อ ใช้งานสคริปต์ต่อ
- ในตัวแก้ไขโค้ด ให้แทนที่บรรทัดที่ 31,
var sum = addend1 + addend2
ด้วยvar sum = parseInt(addend1) + parseInt(addend2)
- กด Command + S (Mac) หรือ Control + S (Windows, Linux) เพื่อบันทึกการเปลี่ยนแปลง
- คลิก label_off ปิดใช้งานเบรกพอยท์ สีจะเปลี่ยนเป็นสีน้ำเงินเพื่อระบุว่าทำงานอยู่ เมื่อตั้งค่านี้ไว้ เครื่องมือสำหรับนักพัฒนาเว็บจะละเว้น ที่คุณตั้งค่าไว้
- ลองใช้เดโมที่มีค่าต่างกัน เดโมจะคำนวณได้อย่างถูกต้องแล้ว
ขั้นตอนถัดไป
บทแนะนำนี้แสดงเพียง 2 วิธีในการตั้งค่าเบรกพอยท์ เครื่องมือสำหรับนักพัฒนาเว็บมีวิธีอื่นๆ อีกมากมาย ซึ่งรวมถึง
- เบรกพอยท์แบบมีเงื่อนไขที่จะถูกเรียกใช้เมื่อเงื่อนไขที่คุณระบุเป็นจริงเท่านั้น
- เบรกพอยท์ของข้อยกเว้นที่ตรวจพบหรือไม่พบ
- เบรกพอยท์ XHR ที่ทริกเกอร์เมื่อ URL ที่ขอตรงกับสตริงย่อยที่คุณระบุ
ดูหยุดโค้ดชั่วคราวด้วยเบรกพอยท์เพื่อเรียนรู้เวลาและวิธีใช้แต่ละประเภท
มีการควบคุมขั้นตอนการใช้โค้ด 2 รายการที่ไม่ได้อธิบายในบทแนะนำนี้ ดูข้าม เพื่อดูข้อมูลเพิ่มเติม