คำถามติดแท็ก jslint

JSLint เป็นเครื่องมือ "คุณภาพโค้ด" สำหรับ JavaScript ที่พัฒนาโดย Douglas Crockford นักพัฒนาที่มีชื่อเสียงซึ่งรับผิดชอบ JSON, JSMin, ADSafe และบางส่วนของ YUI JSLint ขนานกับผ้าสำลีของ C

27
"ใช้เข้มงวด" ทำอะไรใน JavaScript และอะไรคือเหตุผลที่อยู่เบื้องหลัง
ตั้งค่าไว้ที่นี่แล้วStack Overflow нарусском : Чтозначит "ใช้เข้มงวด" หรือไม่ เมื่อเร็ว ๆ นี้ฉันรันโค้ด JavaScript บางส่วนผ่านJSLintของ Crockford และให้ข้อผิดพลาดต่อไปนี้: ปัญหาที่บรรทัด 1 อักขระ 1: ไม่มีคำสั่ง "use เข้มงวด" เมื่อทำการค้นหาฉันรู้ว่ามีบางคนเพิ่ม"use strict";ลงในรหัส JavaScript ของพวกเขา เมื่อฉันเพิ่มคำสั่งข้อผิดพลาดหยุดปรากฏขึ้น น่าเสียดายที่ Google ไม่ได้เปิดเผยประวัติส่วนใหญ่ที่อยู่เบื้องหลังคำสั่งสตริงนี้ แน่นอนว่ามันต้องมีบางสิ่งเกี่ยวกับวิธีที่เบราว์เซอร์ตีความ JavaScript แต่ฉันไม่รู้ว่าจะมีผลกระทบอย่างไร แล้วมัน"use strict";เกี่ยวกับอะไรมันบอกเป็นนัย ๆ และมันยังเกี่ยวข้อง? เบราว์เซอร์ปัจจุบันตอบสนองต่อ"use strict";สตริงหรือไม่เพื่อใช้ในอนาคต

9
JSLint รายงานโดยฉับพลัน: ใช้รูปแบบฟังก์ชั่นของ“ use เข้มงวด”
ฉันรวมถึงคำสั่ง: "use strict"; ที่จุดเริ่มต้นของไฟล์ Javascript ของฉันส่วนใหญ่ JSLint ไม่เคยเตือนมาก่อนเกี่ยวกับเรื่องนี้ แต่ตอนนี้มันพูดว่า: ใช้รูปแบบฟังก์ชั่นของ "ใช้เข้มงวด" ไม่มีใครรู้ว่า "รูปแบบฟังก์ชั่น" จะเป็นอย่างไร
930 javascript  jslint 

18
วิธีการเริ่มต้นความยาวของอาเรย์ใน JavaScript?
บทเรียนส่วนใหญ่ที่ฉันได้อ่านในอาร์เรย์ใน JavaScript (รวมถึงw3schoolsและdevguru ) แนะนำว่าคุณสามารถเริ่มต้นอาร์เรย์ด้วยความยาวที่แน่นอนโดยส่งจำนวนเต็มไปยังตัวสร้าง Array โดยใช้var test = new Array(4);ไวยากรณ์ หลังจากใช้ซินแท็กซ์นี้อย่างอิสระในไฟล์ js ของฉันฉันรันหนึ่งในไฟล์ผ่านjsLintและทำให้เป็นอิสระ: ข้อผิดพลาด: ปัญหาที่บรรทัด 1 อักขระ 22: คาดว่า ')' และเห็น '4' แทน var test = อาร์เรย์ใหม่ (4); ปัญหาที่บรรทัดที่ 1 อักขระ 23: คาดหวัง ';' และแทนที่จะเห็น ')' var test = อาร์เรย์ใหม่ (4); ปัญหาที่บรรทัดที่ 1 อักขระ 23: ต้องการตัวระบุและแทนที่จะเห็น ')' หลังจากอ่านคำอธิบายของ jsLint …

11
JSLint พูดว่า "หายไปพารามิเตอร์ radix"
ฉันรัน JSLint บนโค้ด JavaScript นี้และมันบอกว่า: ปัญหาที่บรรทัด 32 อักขระ 30: ไม่มีพารามิเตอร์ radix นี่คือรหัสคำถาม: imageIndex = parseInt(id.substring(id.length - 1))-1; เกิดอะไรขึ้นที่นี่?
538 javascript  jslint  radix 

8
ฉันควรใช้การตรวจสอบความถูกต้อง JSLint หรือ JSHint JavaScript หรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการในวันที่ 11 เดือนที่ผ่านมา ขณะนี้ฉันกำลังตรวจสอบ JavaScript ของฉันกับ JSLint และกำลังดำเนินการต่อไปมันช่วยฉันในการเขียน JavaScript ที่ดีขึ้นโดยเฉพาะอย่างยิ่งในการทำงานกับห้องสมุด Jquery ฉันมีตอนนี้เจอJSHintส้อมของJSLint ดังนั้นฉันจึงสงสัยว่าเว็บแอปพลิเคชั่นซึ่งเป็นตัวขับเคลื่อนจาวาสคริปต์เป็นอย่างมากซึ่งเป็นเครื่องมือตรวจสอบที่ดีกว่าหรือมีประโยชน์มากที่สุดในการทำงานกับ: JSLint หรือ JSHint? ฉันต้องการตัดสินใจตอนนี้เกี่ยวกับกลไกการตรวจสอบและก้าวไปข้างหน้าใช้สิ่งนี้เพื่อการตรวจสอบด้านลูกค้า และความแตกต่างระหว่าง jshint และ jslint? โปรดอธิบายในตัวอย่างจาวาสคริปต์เดียว ลิงค์: jshint - http://www.jshint.com/ jslint - http://jslint.com/

16
เหตุใดจึงต้องหลีกเลี่ยงตัวดำเนินการเพิ่ม (“ ++”) และตัวลด (“ -”) ใน JavaScript
หนึ่งในเคล็ดลับสำหรับเครื่องมือ jslintคือ: ++ และ - ผู้ประกอบการ ++ (เพิ่มขึ้น) และ - (ลดลง) ได้รับการรู้จักในการมีส่วนร่วมกับรหัสที่ไม่ดีโดยการส่งเสริมความยุ่งยากมากเกินไป พวกเขาเป็นที่สองเท่านั้นที่สถาปัตยกรรมผิดพลาดในการเปิดใช้งานไวรัสและภัยคุกคามความปลอดภัยอื่น ๆ มีตัวเลือก plusplus ที่ห้ามการใช้งานของผู้ประกอบการเหล่านี้ ฉันรู้ว่า PHP สร้างเหมือน$foo[$bar++]มีได้อย่างง่ายดายอาจส่งผลกับการปิดโดยหนึ่งข้อผิดพลาด แต่ฉันไม่สามารถคิดออกวิธีที่ดีกว่าที่จะควบคุมห่วงกว่าที่หรือwhile( a < 10 ) do { /* foo */ a++; }for (var i=0; i<10; i++) { /* foo */ } jslint เน้นที่ภาษานั้นเพราะมีบางภาษาที่คล้ายกันที่ไม่มีไวยากรณ์ " ++" และ " --" หรือจัดการแตกต่างกันหรือมีเหตุผลอื่น ๆ …

17
ทำไม JSHint จึงส่งสัญญาณเตือนถ้าฉันใช้ const?
นี่เป็นข้อผิดพลาดที่ฉันได้รับเมื่อใช้ const: <error line="2" column="1" severity="warning" message="'const' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz)." source="jshint.W104" /> รหัสของฉันมีลักษณะเช่นนี้: const Suites = { Spade: 1, Heart: 2, Diamond: 3, Club: 4 }; รหัสทำงานได้ดีเพียง JSHint เตือนฉันทุกครั้ง

8
ข้อผิดพลาด JSLint 'body of for in ควรถูกรวมอยู่ใน if statement' หมายถึงอะไร?
ฉันใช้JSLintกับไฟล์ JavaScript ของฉัน มันโยนข้อผิดพลาด: for( ind in evtListeners ) { ปัญหาที่บรรทัดที่ 41 อักขระ 9: เนื้อหาของ a for in ควรถูกห่อด้วยคำสั่ง if เพื่อกรองคุณสมบัติที่ไม่ต้องการออกจากต้นแบบ สิ่งนี้หมายความว่า?
242 javascript  jslint 

10
อะไรคือความแตกต่างระหว่าง `วัตถุใหม่ () 'กับสัญกรณ์ตามตัวอักษร?
อะไรคือความแตกต่างระหว่างไวยากรณ์ที่สร้างขึ้นนี้สำหรับการสร้างวัตถุ: person = new Object() ... และไวยากรณ์ตามตัวอักษรนี้: person = { property1 : "Hello" }; ปรากฏว่าทั้งคู่ทำสิ่งเดียวกันแม้ว่า JSLint จะชอบให้คุณใช้สัญกรณ์ตามตัวอักษร อันไหนดีกว่าและทำไม?

11
จะแยกนิพจน์ปกติที่มีความยาวออกเป็นหลายบรรทัดใน JavaScript ได้อย่างไร
ฉันมีนิพจน์ปกติที่ยาวมากซึ่งฉันต้องการแบ่งออกเป็นหลายบรรทัดในรหัส JavaScript ของฉันเพื่อให้แต่ละบรรทัดมีความยาว 80 บรรทัดตามกฎ JSLint ฉันคิดว่ามันดีกว่าสำหรับการอ่าน นี่คือตัวอย่างรูปแบบ: var pattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

8
คุณใช้คุณลักษณะ Quickfix ของกลุ่มอย่างไร
ฉันเป็นผู้ใช้ Vim หน้าใหม่และฉันพบว่าเส้นโค้งการเรียนรู้ค่อนข้างสูงชัน (อย่างน้อยสำหรับฉัน) ฉันเพิ่งติดตั้งสคริปต์กลุ่มนี้สำหรับการตรวจสอบข้อผิดพลาด JavaScriptLint ซึ่งแสดงข้อผิดพลาดในหน้าต่าง Quickfix ของกลุ่มเมื่อฉันบันทึกบัฟเฟอร์ อย่างไรก็ตามฉันไม่รู้ว่าจะทำอย่างไรต่อไป .. ฉันจะ 'เลื่อน' ดูข้อผิดพลาดทั้งหมดได้อย่างไร? ฉันจะปิดหน้าต่าง Quickfix ได้อย่างไร ฉันจะตรวจสอบข้อผิดพลาดหลังจากทำการเปลี่ยนแปลงรหัสของฉันได้อย่างไร ฉันได้ดูเอกสาร vim quickfix แล้ว แต่จำนวนคำสั่งนั้นล้นมากและดูเหมือนจะไม่พบสิ่งที่ต้องการ ความช่วยเหลือใด ๆ จะได้รับการชื่นชม คำถามข้างเคียง: มีวิธีใดบ้างที่จะให้ javascriptlint ตรวจสอบข้อผิดพลาด js สำหรับโค้ดที่อยู่ในไฟล์. html ขอบคุณ!
125 vim  jslint 

3
ไวยากรณ์การเรียกใช้ฟังก์ชันทันที
มีตัวเลือกJSLintซึ่งเป็นหนึ่งใน The Good Parts ที่ "[ต้อง] parens สำหรับการเรียกใช้ทันที" ซึ่งหมายความว่าการก่อสร้าง (function () { // ... })(); จะต้องเขียนเป็น (function () { // ... }()); คำถามของฉันคือ - ใครสามารถอธิบายได้ว่าเหตุใดรูปแบบที่สองนี้จึงถือว่าดีกว่า มีความยืดหยุ่นมากขึ้นหรือไม่? เกิดข้อผิดพลาดน้อยกว่า? รูปแบบแรกมีข้อดีอย่างไร? ตั้งแต่ถามคำถามนี้ฉันได้เข้าใจถึงความสำคัญของการมีความแตกต่างทางภาพที่ชัดเจนระหว่างค่าฟังก์ชันและค่าของฟังก์ชัน พิจารณากรณีที่ผลลัพธ์ของการเรียกใช้ทันทีอยู่ทางขวามือของนิพจน์การมอบหมาย: var someVar = (function () { // ... }()); แม้ว่าวงเล็บด้านนอกสุดจะไม่จำเป็นทางไวยากรณ์ แต่วงเล็บเปิดจะให้การบ่งชี้ล่วงหน้าว่าค่าที่กำหนดไม่ใช่ฟังก์ชันเอง แต่เป็นผลลัพธ์ของฟังก์ชันที่เรียกใช้ สิ่งนี้คล้ายกับคำแนะนำของ Crockford เกี่ยวกับการใช้ตัวพิมพ์ใหญ่ของฟังก์ชันตัวสร้าง - มีไว้เพื่อใช้เป็นสัญญาณภาพสำหรับทุกคนที่ดูซอร์สโค้ด

4
ลำดับฟังก์ชัน JavaScript: ทำไมถึงมีความสำคัญ?
คำถามเดิม: JSHintบ่นเมื่อ JavaScript ของฉันเรียกใช้ฟังก์ชันที่กำหนดไว้ที่ด้านล่างของหน้ามากกว่าการเรียกใช้ อย่างไรก็ตามหน้าของฉันมีไว้สำหรับเกมและจะไม่มีการเรียกใช้ฟังก์ชันใด ๆ จนกว่าจะดาวน์โหลดทั้งหมด เหตุใดฟังก์ชันคำสั่งจึงปรากฏในรหัสของฉันจึงมีความสำคัญ แก้ไข: ฉันคิดว่าฉันอาจพบคำตอบแล้ว http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting ฉันกำลังคร่ำครวญอยู่ภายใน ดูเหมือนว่าฉันต้องใช้เวลาอีกหนึ่งวันในการสั่งซื้อรหัสหกพันบรรทัดใหม่ เส้นโค้งการเรียนรู้ด้วยจาวาสคริปต์ไม่ได้สูงชัน แต่อย่างใด

4
เหตุใด JSHINT จึงบ่นว่านี่เป็นการละเมิดอย่างเข้มงวด
ฉันคิดว่านี่อาจซ้ำกับการละเมิดอย่างเข้มงวดโดยใช้คำหลักนี้และรูปแบบโมดูลที่เปิดเผย ฉันมีรหัสนี้: function gotoPage(s){ if(s<=this.d&&s>0){this.g=s; this.page((s-1)*this.p.size);} } function pageChange(event, sorter) { var dd = event.currentTarget; gotoPage.call(sorter, dd[dd.selectedIndex].value); } และ JSHINT (JSLINT) กำลังบ่น มีข้อความว่า "ละเมิดอย่างเข้มงวด" สำหรับบรรทัดที่ไฮไลต์: การใช้งานFunction.call()และอ้างถึงอินสแตนซ์ของฉันไม่เหมาะสมหรือไม่ ถือว่าเป็นลักษณะที่ไม่ดีหรือไม่?

2
JSLint: ถูกใช้ก่อนกำหนด
สวัสดีฉันมีไฟล์จาวาสคริปต์ 3 ไฟล์ jquery.js ยูทิลิตี้ js file1.js ใน file1.js ฉันมี jQuery.noConflict() jQuery(document).ready(function($) { // .... }); ฉันได้รับข้อผิดพลาด 'jQuery' ถูกใช้ก่อนที่จะมีการกำหนด และมีการใช้ "เอกสาร" ก่อนกำหนด ฉันจะกำจัดคำเตือนนี้อย่างปลอดภัยได้อย่างไร ถ้าฉันทำ var document = document || {}; จากนั้นในยูทิลิตี้ js ของฉันหากใช้มันจะเป็นโมฆะใน IE และตกลงใน firefox อะไรคือทางออกที่ดีที่สุดสำหรับสิ่งนี้?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.