Bây giờ tôi đã thấy 2 phương thức để xác định xem một đối số đã được truyền cho hàm JavaScript chưa. Tôi đang tự hỏi liệu một phương pháp tốt hơn phương pháp kia hay liệu phương pháp này có tệ không?
function Test(argument1, argument2) {
if (Test.arguments.length == 1) argument2 = 'blah';
alert(argument2);
}
Test('test');
Hoặc là
function Test(argument1, argument2) {
argument2 = argument2 || 'blah';
alert(argument2);
}
Test('test');
Theo như tôi có thể nói, cả hai đều có kết quả giống nhau, nhưng tôi chỉ sử dụng cái đầu tiên trước khi sản xuất.
Một lựa chọn khác như Tom đã đề cập :
function Test(argument1, argument2) {
if(argument2 === null) {
argument2 = 'blah';
}
alert(argument2);
}
Theo nhận xét của Juan, sẽ tốt hơn nếu thay đổi đề xuất của Tom thành:
function Test(argument1, argument2) {
if(argument2 === undefined) {
argument2 = 'blah';
}
alert(argument2);
}
argument2 || 'blah';
sẽ dẫn đến 'blah' nếu argument2
là false
(!), Không chỉ đơn giản nếu nó không được xác định. Nếu argument2
là boolean và hàm được truyền false
cho nó, dòng đó sẽ trả về 'blah' mặc dù argument2
được xác định đúng .
argument2
là 0
, ''
hoặc null
.