ตอนนี้ฉันได้เห็น 2 วิธีในการพิจารณาว่ามีการส่งผ่านอาร์กิวเมนต์ไปยังฟังก์ชัน JavaScript หรือไม่ ฉันสงสัยว่าวิธีหนึ่งดีกว่าวิธีอื่นหรือไม่หรือวิธีใดวิธีหนึ่งที่ใช้ไม่ดี
function Test(argument1, argument2) {
if (Test.arguments.length == 1) argument2 = 'blah';
alert(argument2);
}
Test('test');
หรือ
function Test(argument1, argument2) {
argument2 = argument2 || 'blah';
alert(argument2);
}
Test('test');
เท่าที่ฉันสามารถบอกได้พวกเขาทั้งคู่ต่างก็ให้ผลลัพธ์เหมือนกัน แต่ฉันเคยใช้ตัวแรกมาก่อนในการผลิต
ตัวเลือกอื่นตามที่Tomกล่าวถึง:
function Test(argument1, argument2) {
if(argument2 === null) {
argument2 = 'blah';
}
alert(argument2);
}
ตามความคิดเห็นของ Juan มันจะเป็นการดีกว่าถ้าจะเปลี่ยนคำแนะนำของ Tom เป็น:
function Test(argument1, argument2) {
if(argument2 === undefined) {
argument2 = 'blah';
}
alert(argument2);
}
argument2 || 'blah';
จะส่งผลให้ 'blah' ถ้าargument2
เป็นfalse
(!) ไม่ใช่เพียงแค่ถ้ามันไม่ได้กำหนด ถ้าargument2
เป็นแบบบูลและฟังก์ชั่นจะถูกส่งfalse
ให้มันสายที่จะกลับมา 'blah' แม้จะargument2
ถูกกำหนดไว้อย่างถูกต้อง
argument2
เป็น0
, หรือ''
null