ซ้ำเป็นไปได้:
การตรวจจับคุณสมบัติวัตถุที่ไม่ได้กำหนดใน JavaScript จาวา
สคริปต์ที่ไม่ได้กำหนดเปรียบเทียบ
วิธีที่เราสามารถเพิ่มการตรวจสอบตัวแปรที่ไม่ได้กำหนดเช่น:
function A(val) {
if (val == undefined)
// do this
else
// do this
}
ซ้ำเป็นไปได้:
การตรวจจับคุณสมบัติวัตถุที่ไม่ได้กำหนดใน JavaScript จาวา
สคริปต์ที่ไม่ได้กำหนดเปรียบเทียบ
วิธีที่เราสามารถเพิ่มการตรวจสอบตัวแปรที่ไม่ได้กำหนดเช่น:
function A(val) {
if (val == undefined)
// do this
else
// do this
}
คำตอบ:
ห้องสมุด JQuery ได้รับการพัฒนาโดยเฉพาะเพื่อให้ง่ายขึ้นและเพื่อรวมการทำงานของ JavaScript บางอย่างเข้าด้วยกัน
อย่างไรก็ตามถ้าคุณต้องการตรวจสอบตัวแปรเทียบกับundefined
ค่าคุณไม่จำเป็นต้องคิดค้นวิธีพิเศษใด ๆ เนื่องจาก JavaScript มีตัวtypeof
ดำเนินการซึ่งง่ายรวดเร็วและข้ามแพลตฟอร์ม:
if (typeof value === "undefined") {
// ...
}
มันจะส่งกลับสตริงที่ระบุประเภทของตัวแปรหรือตัวถูกดำเนินการที่ไม่ได้ประเมินค่าอื่น ๆ ข้อได้เปรียบหลักของวิธีนี้เมื่อเทียบกับif (value === undefined) { ... }
คือtypeof
จะไม่มีการเพิ่มข้อยกเว้นในกรณีที่value
ไม่มีตัวแปร
("#myId")
ต้องแน่ใจว่าคุณต้องการอะไรจริง ๆ : typeof ("#myId")=== "undefined"
ข หรือ:typeof ("#myId").val() === "undefined"
("#myId")
ไม่มีอะไรนอกจากค่าคงที่สตริง มันจะถูกกำหนดและมีประเภท"string"
เสมอ หากคุณหมายถึงวัตถุ jQueryจริงที่สร้างด้วยวัตถุ$("#myId")
นั้นจะถูกกำหนดเป็น"object"
(หากคุณมีการเชื่อมโยง jQuery อย่างถูกต้อง) การดำรงอยู่ขององค์ประกอบ DOM ที่มี ID myId
สามารถประเมินได้ด้วยในขณะที่การตรวจสอบถ้าค่าของมันจะไม่ว่างเปล่าที่สามารถทำได้ด้วยif ($("#myId").length > 0) { ... }
if ($("#myId").val()) { ... }
ข้อเหล่านี้ไม่เกี่ยวข้องกับหัวข้อของคำถามนี้
value === undefined
จะยกข้อยกเว้นหากvalue
ไม่มีตัวแปร ดังนั้นมันขึ้นอยู่กับคุณว่าจะใช้อะไรในชีวิตจริง
ในกรณีนี้คุณสามารถใช้การ=== undefined
เปรียบเทียบ:if(val === undefined)
ใช้งานได้เพราะมีอยู่val
เสมอ(เป็นอาร์กิวเมนต์ของฟังก์ชัน)
หากคุณต้องการทดสอบตัวแปรที่ไม่มีอาร์กิวเมนต์เช่นอาจไม่ได้กำหนดเลยคุณต้องใช้if(typeof val === 'undefined')
เพื่อหลีกเลี่ยงข้อยกเว้นในกรณีที่val
ไม่มีอยู่
โปรดทราบว่า typeof คืนค่าสตริงเสมอและจะไม่สร้างข้อผิดพลาดหากตัวแปรไม่มีอยู่เลย
function A(val){
if(typeof(val) === "undefined")
//do this
else
//do this
}
===
แทน==
ฉันรู้ว่าฉันมาสายเพื่อรับฟังก์ชั่น แต่ jquery มีฟังก์ชั่นบิวด์ในการทำสิ่งนี้
if(jQuery.type(val) === "undefined"){
//Some code goes here
}
อ้างถึงเอกสาร jquery API ของ jquery.type https://api.jquery.com/jQuery.type/สำหรับสิ่งเดียวกัน
คุณสามารถใช้เทคนิคชวเลขเพื่อตรวจสอบว่ามันไม่ได้กำหนดหรือเป็นโมฆะ
function A(val)
{
if(val || "")
//do this
else
//do this
}
หวังว่านี่จะช่วยคุณได้
if (value === undefined) {
// ...
}
เมื่อฉันทดสอบ " typeof obj === undefined
" การalert(typeof obj)
ส่งคืนobject
แม้ว่า obj จะไม่ได้กำหนด ตั้งแต่ obj เป็นประเภทของการObject
กลับมาของมันไม่ได้Object
undefined
ดังนั้นหลังจากเวลาทำการฉันเลือกเทคนิคด้านล่าง
if(document.getElementById(obj) !== null){
//do...
}else{
//do...
}
ฉันไม่แน่ใจว่าทำไมเทคนิคแรกไม่ทำงาน แต่ฉันทำงานเสร็จโดยใช้สิ่งนี้
หากคุณมีชื่อขององค์ประกอบและไม่ใช่ id เราสามารถบรรลุการตรวจสอบไม่ได้กำหนดในองค์ประกอบข้อความทั้งหมด (ตัวอย่าง) ดังต่อไปนี้และกรอกค่าเริ่มต้น 0.0:
var aFieldsCannotBeNull=['ast_chkacc_bwr','ast_savacc_bwr'];
jQuery.each(aFieldsCannotBeNull,function(nShowIndex,sShowKey) {
var $_oField = jQuery("input[name='"+sShowKey+"']");
if($_oField.val().trim().length === 0){
$_oField.val('0.0')
}
})
ฉันไม่แน่ใจว่ามันเป็นทางออกที่ดีที่สุด แต่ก็ใช้ได้ดี:
if($someObject['length']!=0){
//do someting
}
function isValue(value, def, is_return) {
if ( $.type(value) == 'null'
|| $.type(value) == 'undefined'
|| $.trim(value) == ''
|| ($.type(value) == 'number' && !$.isNumeric(value))
|| ($.type(value) == 'array' && value.length == 0)
|| ($.type(value) == 'object' && $.isEmptyObject(value)) ) {
return ($.type(def) != 'undefined') ? def : false;
} else {
return ($.type(is_return) == 'boolean' && is_return === true ? value : true);
}
}
ลองใช้ตัวตรวจสอบชนิดทั้งหมด
คุณสามารถใช้สองทาง 1) if ( val == null )
2)if ( val === undefine )