ดูเหมือนจะมีความเกลียดชังอย่างมากต่อการสร้างฟังก์ชันใน JS ความเกลียดชังนี้ทำให้ผู้คนพยายามฉลาดและใช้เทคนิคที่ไร้สาระเพียงเพื่อเก็บสิ่งต่าง ๆ ไว้ในบรรทัดเดียวเหมือนการเรียกฟังก์ชั่น แน่นอนชื่อฟังก์ชั่นในการโทรทำหน้าที่เป็นเอกสารเสริมด้วย เราไม่สามารถแนบความคิดเห็นกับการแสดงออกที่ยุ่งยากเพราะมันจะเอาชนะจุดที่ทำดังนั้นเราจึงเรียกมันว่า "js idiom" และทันใดนั้นก็เป็นที่เข้าใจ
Javascript เข้าถึงได้ง่ายมากคนส่วนใหญ่ไม่กินข้อกำหนดสำหรับอาหารเช้าเหมือนที่เราทำ ดังนั้นพวกเขาจะไม่เข้าใจว่าสมมติฐานที่ซ่อนอยู่และคดีขอบของสำนวนคืออะไร
x = x || 'default_value';
ค่าเฉลี่ยของโจจะไม่เข้าใจสิ่งนี้หรือจำได้ว่ามันเป็นสำนวนสำหรับค่าเริ่มต้น ทั้งสองมีอันตรายในความเป็นจริงหลังมีอันตรายมากยิ่งขึ้น เขาจะไม่เข้าใจสมมติฐานและคดีต่าง ๆ ที่นี่ เขาจะไม่สนใจอ่านข้อกำหนดและเข้าใจมันเลย
เมื่อฉันมองไปที่รหัสที่ฉันเห็น "ถ้ามันnull
หรือundefined
แล้วตั้งเป็นค่าเริ่มต้นนี้. แม้ว่ามันจะยังปริยายรักษา+0
, -0
, NaN
, false
และ""
เป็นค่าที่ไม่เหมาะสม. ฉันจะต้องจำไว้ว่า 3 เดือนนับจากนี้เมื่อความต้องการ เพื่อเปลี่ยนแปลงฉันอาจจะลืมมัน ".
ข้อสันนิษฐานโดยนัยมีแนวโน้มที่จะก่อให้เกิดข้อผิดพลาดในอนาคตและเมื่อ codebase ของคุณเต็มไปด้วยเทคนิคเช่นนี้แล้วไม่มีโอกาสที่คุณจะทำให้พวกเขาทั้งหมดอยู่ในหัวของคุณเมื่อใดก็ตามที่คุณคิดเกี่ยวกับการเปลี่ยนแปลงที่จะมีผล และนี่คือ "JS pro" ค่าเฉลี่ย joe จะเขียนบั๊กแม้ว่าข้อกำหนดจะต้องยอมรับค่าที่ผิดพลาดตั้งแต่เริ่มต้น
ตัวอย่างใหม่ของคุณมีไวยากรณ์ที่คุ้นเคยมากกว่า แต่ก็ยังมีปัญหาข้างต้น
คุณสามารถไปกับ:
function f(x) {
x = valueOrDefault(x, "default_value");
}
ตอนนี้คุณสามารถมีตรรกะที่ซับซ้อนมากในการจัดการเคสขอบและรหัสลูกค้ายังคงดูสวยงามและอ่านได้
ตอนนี้คุณจะแยกความแตกต่างระหว่างคุณสมบัติภาษาขั้นสูงเช่นการส่งผ่านฟังก์ชั่นเป็นอาร์กิวเมนต์หรือเคล็ดลับที่ฉลาดได้|| "default"
อย่างไร
กลเม็ดที่ชาญฉลาดจะทำงานภายใต้สมมติฐานที่ซ่อนอยู่ซึ่งอาจถูกละเว้นเมื่อสร้างรหัสในตอนแรก ฉันจะไม่ต้องแก้ไข IIFE ให้เป็นอย่างอื่นเพราะความต้องการเปลี่ยนไปมันจะอยู่ที่นั่นเสมอ บางทีในปี 2020 เมื่อฉันสามารถใช้โมดูลจริง แต่ใช่
| 0
หรือรุ่นลัทธิขนส่งสินค้าที่~~num
ใช้สำหรับปูพื้นถือว่าเป็นจำนวนเต็มบวกและมีการลงนามแบบ 32 บิต
|| "default"
สมมติว่าค่าเท็จทั้งหมดเหมือนกับที่ไม่ผ่านการโต้แย้งเลย
และอื่น ๆ