ฉันรู้ว่าด้านล่างเป็นสองวิธีใน JavaScript เพื่อตรวจสอบว่าตัวแปรไม่ใช่null
แต่ฉันสับสนซึ่งเป็นวิธีปฏิบัติที่ดีที่สุดในการใช้
ฉันควรทำหรือไม่:
if (myVar) {...}
หรือ
if (myVar !== null) {...}
ฉันรู้ว่าด้านล่างเป็นสองวิธีใน JavaScript เพื่อตรวจสอบว่าตัวแปรไม่ใช่null
แต่ฉันสับสนซึ่งเป็นวิธีปฏิบัติที่ดีที่สุดในการใช้
ฉันควรทำหรือไม่:
if (myVar) {...}
หรือ
if (myVar !== null) {...}
คำตอบ:
พวกเขาจะไม่เทียบเท่า ก่อนจะดำเนินการบล็อกตามif
คำสั่งถ้าmyVar
เป็นจริง (เช่นประเมินtrue
ในเงื่อนไข) ในขณะที่สองจะดำเนินการบล็อกถ้าmyVar
เป็นค่าอื่นnull
ใด
เฉพาะค่าที่ไม่เป็นความจริงใน JavaScript มีดังต่อไปนี้ ( ค่าเท็จหรือที่รู้จัก)
null
undefined
0
""
(สตริงว่าง)false
NaN
นี่คือวิธีที่คุณสามารถทดสอบว่าตัวแปรไม่ใช่ NULL:
if (myVar !== null) {...}
บล็อกจะถูกดำเนินการหาก myVar ไม่ใช่โมฆะ .. มันจะถูกดำเนินการหาก myVar ไม่ได้กำหนดหรือเป็นเท็จ0
หรือNaN
หรืออย่างอื่น ..
("")
และไม่ได้กำหนด ดูซอของฉันเป็นข้อมูลอ้างอิง: jsfiddle.net/b0tm7yaf
ได้อ่านที่โพสต์นี้: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
มันมีเคล็ดลับที่ดีสำหรับ JavaScript โดยทั่วไป แต่สิ่งหนึ่งที่ไม่ได้กล่าวถึงคือคุณควรตรวจสอบค่าว่างเช่น:
if(myvar) { }
นอกจากนี้ยังกล่าวถึงสิ่งที่ถือว่าเป็น 'เท็จ' ที่คุณอาจไม่รู้
if(myVar) { code }
จะไม่ถูกดำเนินการเฉพาะเมื่อmyVar
เท่ากับ: false, 0, "", null, undefined, NaN
หรือคุณไม่เคยกำหนดตัวแปรไว้myVar
(จากนั้นโค้ดจะหยุดการทำงานและเพิ่มข้อยกเว้น)if(myVar !== null) {code}
จะไม่ถูกดำเนินการเฉพาะเมื่อmyVar
เท่ากับnull
หรือคุณไม่เคยกำหนดไว้ (มีข้อยกเว้น)ที่นี่คุณมีทั้งหมด ( src )
ถ้า
== (การปฏิเสธของมัน! = )
=== (การปฏิเสธของมัน! == )
มีอีกสถานการณ์ที่เป็นไปได้ที่ฉันเพิ่งเจอ
ฉันโทร ajax และรับข้อมูลกลับเป็นโมฆะในรูปแบบสตริง ฉันต้องตรวจสอบดังนี้:
if(value != 'null'){}
ดังนั้น null เป็นสตริงที่อ่านว่า "null" แทนที่จะเป็น null จริง ๆ
แก้ไข:ควรเข้าใจว่าฉันไม่ได้ขายสิ่งนี้ตามที่ควรจะทำ ฉันมีสถานการณ์ที่เป็นวิธีเดียวที่ทำได้ ฉันไม่แน่ใจว่าทำไม ... บางทีคนที่เขียนแบ็คเอนด์กำลังนำเสนอข้อมูลไม่ถูกต้อง แต่ไม่ว่าจะเป็นชีวิตจริง มันน่าผิดหวังที่เห็นคนที่เข้าใจว่าเรื่องนี้ไม่ถูกต้องและลงคะแนนโดยคนที่ช่วยได้จริง
null
สตริง
value = JSON.parse(value)
และจากนั้นใช้ง่ายและเหมาะสมvalue != null
ทดสอบ
ถ้าmyVar
เป็นโมฆะถ้าบล็อกไม่ดำเนินการอื่น ๆ ก็จะดำเนินการ
if (myVar != null) {...}
'null'
null
บางครั้งถ้ามันไม่ได้กำหนดไว้จะดีกว่าที่จะเตรียม สำหรับเรื่องนี้ผมใช้typeof
if(typeof(variable) !== "undefined") {
//it exist
if(variable !== null) {
//and is not null
}
else {
//but is null
}
}
else {
//it doesn't
}
คำสั่งสองเงื่อนไขที่คุณระบุไว้ที่นี่ไม่ได้ดีไปกว่าข้อความอื่น การใช้งานของคุณขึ้นอยู่กับสถานการณ์ คุณพิมพ์ผิดตามตัวอย่างที่ 2 ควรมีเพียงหนึ่งเครื่องหมายเท่ากับหลังจากเครื่องหมายอัศเจรีย์
ตัวอย่างที่ 1 พิจารณาว่าค่าในmyVarเป็นจริงและเรียกใช้งานโค้ดภายใน{... }
ตัวอย่างที่ 2 ประเมินว่าmyVarไม่เท่ากับ null และถ้ากรณีนั้นเป็นจริงมันจะรันโค้ดของคุณภายใน{... }
ฉันขอแนะนำให้ดูที่งบเงื่อนไขสำหรับเทคนิคเพิ่มเติม เมื่อคุณคุ้นเคยกับพวกเขาคุณสามารถตัดสินใจได้เมื่อคุณต้องการ
=
นั้นมีความสำคัญและสร้างความแตกต่างอย่างมากกับคำถาม บางทีคุณอาจไม่ทราบว่ามีตัวดำเนินการ!==
และ===
ตัวดำเนินการใน JavaScript หรือไม่