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

ไวยากรณ์หมายถึงองค์ประกอบภาษาจริงและสัญลักษณ์เอง ควรติดแท็กคำถามเป็นไวยากรณ์เมื่อคำถามเฉพาะและเกี่ยวข้องเกือบทั้งหมดกับไวยากรณ์เพียงอย่างเดียว แท็กนี้ควรใช้กับแท็กภาษาเฉพาะ

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

3
วัตถุ JSON ที่ซ้อนกัน - ฉันต้องใช้อาร์เรย์สำหรับทุกสิ่งหรือไม่
มีวิธีใดบ้างที่จะมีวัตถุซ้อนกันใน JSON ดังนั้นฉันจึงไม่ต้องสร้างอาร์เรย์จากทุกสิ่ง เพื่อให้วัตถุของฉันถูกแยกวิเคราะห์โดยไม่มีข้อผิดพลาดดูเหมือนว่าฉันต้องการโครงสร้างแบบนี้: {"data":[{"stuff":[ {"onetype":[ {"id":1,"name":"John Doe"}, {"id":2,"name":"Don Joeh"} ]}, {"othertype":[ {"id":2,"company":"ACME"} ]}] },{"otherstuff":[ {"thing": [[1,42],[2,2]] }] }]} หากฉันดึงวัตถุนี้มาเป็นตัวแปรที่เรียกว่า "ผลลัพธ์" ฉันต้องเข้าถึงวัตถุที่ซ้อนกันดังนี้: result.data[0].stuff[0].onetype[0] และ result.data[1].otherstuff[0].thing[0] สิ่งนี้ดูเหมือนเงอะงะและซ้ำซ้อนสำหรับฉันถ้าเป็นไปได้ฉันต้องการ: result.stuff.onetype[0] และ result.otherstuff.thing แต่ฉันจะใช้คีย์ออบเจ็กต์โดยตรงได้อย่างไรในเมื่อทุกอย่างเป็นอาร์เรย์ สำหรับจิตใจที่สับสนและไร้การศึกษาของฉันสิ่งนี้ดูเหมือนจะเหมาะสมกว่า: {"data": {"stuff": {"onetype":[ {"id":1,"name": ""}, {"id":2,"name": ""} ]} {"othertype":[ {"id":2,"xyz": [-2,0,2],"n":"Crab Nebula","t":0,"c":0,"d":5} ]} } {"otherstuff": {"thing": [[1,42],[2,2]] } } …

13
รหัสเน้นไวยากรณ์ด้วย Javascript [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ไลบรารี Javascript ใดที่คุณสามารถแนะนำสำหรับไวยากรณ์ที่เน้น <code> บล็อกใน HTML (โปรดขอคำแนะนำหนึ่งข้อต่อหนึ่งคำตอบ)


4
ใช้ unset เทียบกับการตั้งค่าตัวแปรให้ว่างเปล่า
ฉันกำลังเขียนกรอบการทดสอบทุบตีซึ่งในฟังก์ชันการทดสอบสามารถใช้ทั้งการทดสอบทุบตีมาตรฐาน ( [[) และตัวจับคู่ที่กำหนดไว้ล่วงหน้าได้ Matchers เป็นตัวห่อเป็น "[[" และนอกเหนือจากการส่งคืนรหัสส่งคืนแล้วให้ตั้งค่าข้อความที่มีความหมายเพื่อบอกสิ่งที่คาด ตัวอย่าง: string_equals() { if [[ ! $1 = $2 ]]; then error_message="Expected '$1' to be '$2'." return 1 fi } ดังนั้นเมื่อใช้ตัวจับคู่และล้มเหลวระบบจะตั้งค่า error_message เท่านั้น ในเวลาต่อมาฉันทดสอบว่าการทดสอบสำเร็จหรือไม่ หากสำเร็จฉันจะพิมพ์ความคาดหวังเป็นสีเขียวหากล้มเหลวเป็นสีแดง นอกจากนี้อาจมีชุด error_message ดังนั้นฉันจึงทดสอบว่ามีข้อความอยู่หรือไม่พิมพ์แล้วจึงยกเลิกการตั้งค่า (เนื่องจากการทดสอบต่อไปนี้อาจไม่ได้ตั้งค่า a error_message): if [[ $error_message ]]; then printf '%s\n' "$error_message" unset -v error_message …
108 bash  variables  syntax 


4
ความเชื่อมโยงของ“ in” ใน Python?
ฉันกำลังสร้างตัวแยกวิเคราะห์ Python และสิ่งนี้ทำให้ฉันสับสนจริงๆ : >>> 1 in [] in 'a' False >>> (1 in []) in 'a' TypeError: 'in <string>' requires string as left operand, not bool >>> 1 in ([] in 'a') TypeError: 'in <string>' requires string as left operand, not list "ใน" ทำงานอย่างไรใน Python เกี่ยวกับการเชื่อมโยง ฯลฯ เหตุใดจึงไม่มีการแสดงออกทั้งสองแบบนี้ในลักษณะเดียวกัน

2
เหตุใดฟังก์ชันและวิธีการใน PHP จึงไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่
ฟังก์ชันและวิธีการใน PHP ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ตามที่แสดงในตัวอย่างต่อไปนี้ function ag() { echo '2'; } Ag(); class test { function clMe() { echo 'hi'; } } $instance = new test; $instance->clme(); แต่นั่นไม่ใช่กรณีที่มีตัวแปร อะไรคือเหตุผล?

2
Use-case of `oneway void` ใน Objective-C?
ฉันพบคีย์เวิร์ดแปลก ๆ ใน NSObject.h - (oneway void)release; ฉันค้นหาเว็บและเรียนรู้ว่ามันเกี่ยวข้องกับการส่งข้อความแบบอะซิงโครนัสซึ่งดูคล้ายกับการส่งข้อความของ Erlang ดูเหมือนว่าสิ่งนี้สามารถสร้างสิ่งที่น่าสนใจมากมาย คำหลักนี้มีลักษณะการใช้งานที่ดีอะไรบ้าง

5
ตัวดำเนินการเท็จใน C # เหมาะสำหรับอะไร?
มีตัวดำเนินการแปลก ๆ สองตัวใน C #: ที่ ดำเนินการที่แท้จริง ตัวดำเนินการเท็จ ถ้าฉันเข้าใจถูกต้องตัวดำเนินการเหล่านี้สามารถใช้ในประเภทที่ฉันต้องการใช้แทนนิพจน์บูลีนและฉันไม่ต้องการให้การแปลงโดยนัยเป็นบูล สมมติว่าฉันมีคลาสต่อไปนี้: public class MyType { public readonly int Value; public MyType(int value) { Value = value; } public static bool operator true (MyType mt) { return mt.Value > 0; } public static bool operator false (MyType mt) { return mt.Value < …
107 c#  .net  syntax 

2
คำนำหน้า ab ก่อนสตริง python หมายถึงอะไร?
ในซอร์สโค้ด python ฉันสะดุดเมื่อฉันเห็นb ตัวเล็กก่อนสตริงเช่นใน: b"abcdef" ฉันรู้เกี่ยวกับuคำนำหน้าแสดงถึงสตริงยูนิโคดและrคำนำหน้าสำหรับลิเทอรัลสตริงดิบ สิ่งที่ไม่bยืนและที่ชนิดของรหัสที่มาก็จะเป็นประโยชน์ในขณะที่มันน่าจะเป็นเหมือนกับสตริงธรรมดาโดยไม่ต้องคำนำหน้าใด ๆ

4
ตำแหน่งของวงเล็บสำหรับการเรียกใช้ฟังก์ชัน JavaScript ที่ไม่ระบุตัวตนโดยอัตโนมัติ?
ฉันเพิ่งเปรียบเทียบเวอร์ชันปัจจุบันของjson2.jsกับเวอร์ชันที่ฉันมีในโปรเจ็กต์ของฉันและสังเกตเห็นความแตกต่างในการสร้างนิพจน์ฟังก์ชันและดำเนินการด้วยตนเอง รหัสที่ใช้ในการปิดฟังก์ชันนิรนามในวงเล็บแล้วเรียกใช้งาน (function () { // code here })(); แต่ตอนนี้มันรวมฟังก์ชันที่เรียกใช้งานอัตโนมัติไว้ในวงเล็บ (function () { // code here }()); มีความคิดเห็นโดย CMS ในคำตอบที่ยอมรับของไวยากรณ์ฟังก์ชันที่ไม่ระบุชื่อที่ห่อหุ้มของExplain JavaScriptว่า "ทั้งคู่: (function(){})();และ(function(){}());ถูกต้อง" ฉันสงสัยว่าความแตกต่างคืออะไร? อดีตใช้หน่วยความจำโดยทิ้งฟังก์ชันทั่วโลกที่ไม่ระบุตัวตนหรือไม่? วงเล็บควรอยู่ที่ไหน?

6
อะไรคือกฎที่แน่นอนเมื่อคุณสามารถละเว้นวงเล็บจุดวงเล็บปีกกา = (ฟังก์ชัน) ฯลฯ ได้
อะไรคือกฎที่แม่นยำเมื่อคุณสามารถละเว้น (ละเว้น) วงเล็บจุดวงเล็บปีกกา = (ฟังก์ชัน) ฯลฯ ได้ ตัวอย่างเช่น, (service.findAllPresentations.get.first.votes.size) must be equalTo(2). service เป็นวัตถุของฉัน def findAllPresentations: Option[List[Presentation]] votes ผลตอบแทน List[Vote] ต้องและจะมีฟังก์ชั่นทั้งสองรายละเอียด ทำไมฉันไปไม่ได้: (service findAllPresentations get first votes size) must be equalTo(2) เหรอ? ข้อผิดพลาดของคอมไพเลอร์คือ: "RestServicesSpecTest.this.service.findAllPresentations ประเภทตัวเลือก [รายการ [com.sharca.Presentation]] ไม่ใช้พารามิเตอร์" เหตุใดจึงคิดว่าฉันกำลังพยายามส่งผ่านพารามิเตอร์ เหตุใดฉันจึงต้องใช้จุดสำหรับการเรียกทุกวิธี ทำไมต้อง(service.findAllPresentations get first votes size)เท่ากันถึง (2) ส่งผลให้: "not found: value …
106 syntax  scala 

3
“%” (เปอร์เซ็นต์) ทำอะไรใน PowerShell
ดูเหมือนว่าการดำเนินการ% จะเริ่มบล็อกสคริปต์หลังจากไปป์ไลน์แม้ว่าabout_Script_Blocksจะระบุว่าไม่จำเป็นต้องใช้% ก็ตาม ทั้งหมดนี้ใช้ได้ดี get-childitem | % { write-host $_.Name } { write-host 'hello' } % { write-host 'hello' } แต่เมื่อเราเพิ่มบล็อกสคริปต์หลังไปป์ไลน์เราจำเป็นต้องมี% ก่อน get-childitem | { write-host $_.Name }
106 powershell  syntax 


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