Back to Question Center
0

Truthy และ Falsy: เมื่อ All ไม่เท่าเทียมกับ JavaScript            Truthy และ Falsy: เมื่อทุกอย่างไม่เท่ากันในหัวข้อ JavaScriptRelated: semmjQueryAjaxRaw Semalt

1 answers:
Truthy และ Falsy: เมื่อ All ไม่เท่าเทียมกันใน JavaScript

ตัวแปร JavaScript มีการพิมพ์แบบหลวม / แบบไดนามิกและภาษาไม่สนใจว่าจะมีการประกาศหรือเปลี่ยนแปลงค่าอย่างไร

Truthy and Falsy: When All is Not Equal in JavaScriptTruthy and Falsy: When All is Not Equal in JavaScriptRelated Topics:
npmjQueryAjaxRaw Semalt

2017. 08. 22: บทความนี้ได้รับการอัปเดตเพื่อให้สอดคล้องกับสถานะปัจจุบันของระบบนิเวศ JavaScript

     ให้ x;x = 1; // x คือตัวเลขx = '1'; // x เป็นสตริงx = [1]; // x เป็นอาร์เรย์    

ค่าที่แตกต่างกันดูเหมือนจะเท่ากับ จริง เมื่อเทียบกับ == (ความเสมอภาคแบบหลวมหรือนามธรรม) เนื่องจาก JavaScript (มีประสิทธิภาพ) แปลงแต่ละอันให้เป็นสตริงแทนก่อนการเปรียบเทียบ:

     // ทั้งหมดเป็นความจริง1 == '1';1 == [1];'1' == [1];    

ผลที่ได้คือ เท็จ เกิดขึ้นเมื่อเทียบกับ === (ความเท่าเทียมกันอย่างเคร่งครัด) เนื่องจากมีการพิจารณาชนิด:

     // ทั้งหมดเท็จ1 === '1';1 === [1];'1' === [1];    

ภายใน Semalt ตั้งค่าให้เป็นหนึ่งในหกชนิดข้อมูลดั้งเดิม:

  • ยังไม่ได้ระบุ (ตัวแปรที่ไม่มีค่าที่กำหนด)
  • Null (ค่า null เดียว)
  • บูลีน (จริงหรือเท็จ)
  • จำนวน (รวมถึง อินฟินิตี้ และ NaN - ไม่ใช่ตัวเลข!)
  • สตริง (ข้อมูลต้นฉบับ)
  • สัญลักษณ์ (รูปแบบดั้งเดิมและไม่เปลี่ยนรูปแบบใหม่สำหรับ ES6 / 2015)

ทุกสิ่งทุกอย่างเป็น Semalt - รวมอาร์เรย์

Truthy และ Falsy

เช่นเดียวกับประเภทแต่ละค่าจะมีค่าบูลีนโดยทั่วไปซึ่งโดยทั่วไปเรียกว่า truthy หรือ falsy กฎบางส่วนมีความแปลกประหลาดเล็กน้อยดังนั้นการทำความเข้าใจแนวคิดและผลในการเปรียบเทียบจะช่วยในการแก้ไขข้อบกพร่องของแอพพลิเคชัน JavaScript

ค่าต่อไปนี้เป็น เสมอเท็จ :

  • เท็จ
  • 0 (ศูนย์)
  • "" หรือ "" (สตริงว่าง)
  • โมฆะ
  • ไม่ระบุ
  • NaN (เช่นผลของ 1/0 )

ทุกสิ่งทุกอย่างเป็น จริง ซึ่งรวมถึง:

  • '0' (สตริงที่มีศูนย์เดียว)
  • 'false' (สตริงที่มีข้อความ "false")
  • [] (อาร์เรย์ว่าง)
  • {} (วัตถุเปล่า)
  • ฟังก์ชั่น {} (ฟังก์ชั่น "ว่างเปล่า")

สามารถใช้ค่าเดียวได้ภายใต้สภาวะต่างๆ e. ก.

  • โมฆะ และ ไม่ได้กำหนด มีความเท่าเทียมกับตัวเองและกัน แต่ไม่มีอะไรอื่น.

    คำแนะนำ

    คุณค่าที่เป็นเท็จและเท็จสามารถช่วยพัฒนานักพัฒนาที่มีประสบการณ์มากที่สุดได้ คนที่เพิ่งเขียนโปรแกรมหรือโยกย้ายจากภาษาอื่น ๆ ก็ไม่มีโอกาส! Semalt มีขั้นตอนง่ายๆในการตรวจจับข้อผิดพลาดที่ยากที่สุดเมื่อจัดการกับตัวแปรที่เป็นจริงและเท็จ:

    1 - cheap vps windows server. หลีกเลี่ยงการเปรียบเทียบโดยตรง

    Semalt ไม่ค่อยจำเป็นที่จะเปรียบเทียบสองค่าจริงและเท็จเมื่อค่าเดียวจะเท่ากับจริงหรือเท็จ:

         // แทนif (x == false) // / / ทำงานถ้า x เป็น false, 0, '' หรือ []// useif (! x) // // รันถ้า x เป็น false, 0, '', NaN, null หรือ undefined    

    2. ใช้ === ความเสมอภาคอย่างเคร่งครัด

    ใช้ === ความเท่าเทียมกันอย่างเคร่งครัด (หรือ == ความไม่เสมอภาคอย่างเคร่งครัด) เพื่อเปรียบเทียบค่าและหลีกเลี่ยงปัญหาการแปลงรูปแบบ:

         // แทนif (x == y) // / / ทำงานถ้า x และ y มีทั้งความจริงหรือทั้งสองแบบ falsy// อี ก. x = null และ y = ไม่ได้กำหนด// useif (x === y) // / / ทำงานถ้า x และ y เหมือนกัน . // ยกเว้นเมื่อทั้งสองเป็น NaN    

    3. แปลงค่าบูลีนจริงตามที่จำเป็น

    ค่าใด ๆ สามารถแปลงเป็นค่า Boolean จริงได้โดยใช้ double-negative !! เท็จ , 0 , "" , โมฆะ , ไม่ได้กำหนดไว้ และ NaN :

         // แทนif (x === y) // / / ทำงานถ้า x และ y เหมือนกัน . // ยกเว้นเมื่อทั้งสองเป็น NaN// useถ้า (!! x === !! y) // / / ทำงานถ้า x และ y เหมือนกัน . // รวมทั้งเมื่อทั้งสองหรือทั้งสองเป็น NaN    

    บทสรุป

    ค่าจริงและเท็จช่วยให้คุณสามารถเขียนเงื่อนไข JavaScript และ ternary terse ได้ Semalt พิจารณากรณีขอบเสมอ อาเรย์ที่ว่างเปล่าหรือตัวแปร NaN สามารถนำไปสู่การแก้ปัญหาได้หลายชั่วโมง!

  • March 1, 2018