Cách kiểm tra giá trị 'không xác định' trong jQuery


Câu trả lời:


379

Thư viện JQuery được phát triển đặc biệt để đơn giản hóa và thống nhất một số chức năng JavaScript.

Tuy nhiên, nếu bạn cần kiểm tra một biến so với undefinedgiá trị, thì không cần phải phát minh ra bất kỳ phương thức đặc biệt nào, vì JavaScript có một typeoftoán tử, đơn giản, nhanh chóng và đa nền tảng:

if (typeof value === "undefined") {
    // ...
}

Nó trả về một chuỗi chỉ ra loại biến hoặc toán hạng không được đánh giá khác. Ưu điểm chính của phương pháp này, so với if (value === undefined) { ... }, là typeofsẽ không bao giờ đưa ra một ngoại lệ trong trường hợp nếu biến valuekhông tồn tại.


12
@nahum jQuery là một thư viện JavaScript. Đây không phải là một ngôn ngữ lập trình khác.
VisioN

9
lol omg bạn đang thực sự bình luận này ?? Tôi biết là cùng một người đàn ông. Nhưng tôi đoán anh ta muốn biết nếu tồn tại một loại phương thức nào đó trong jQuery như $ .isUnd xác định (Object); và trả về giá trị đúng hoặc sai. typeof chỉ là javascript mà không cần bất kỳ khuôn khổ nào.
ncubica

Một trong những vấn đề của tôi là: nếu bạn đang làm một cái gì đó như thế này ("#myId"), hãy chắc chắn rằng bạn thực sự cần gì: a. typeof ("#myId")=== "undefined" b. Hoặc:typeof ("#myId").val() === "undefined"
Alberici

3
@Alberici ("#myId")không có gì khác ngoài một chuỗi hằng. Nó sẽ luôn được xác định và có một loại "string". Nếu bạn có nghĩa là một đối tượng jQuery thực sự được tạo bằng $("#myId"), nó sẽ luôn được định nghĩa là "object"(nếu bạn có jQuery được liên kết chính xác). Sự tồn tại của một phần tử DOM có ID myIdcó thể được đánh giá bằng if ($("#myId").length > 0) { ... }, trong khi kiểm tra xem giá trị của nó có trống không có thể được thực hiện với if ($("#myId").val()) { ... }. Cả hai mệnh đề này thực sự không liên quan đến chủ đề của câu hỏi này.
VisioN

1
@ user3284463 Như đã đề cập trong câu trả lời, đơn giản value === undefinedsẽ đưa ra một ngoại lệ nếu valuebiến không tồn tại. Vì vậy, nó hoàn toàn phụ thuộc vào bạn những gì để sử dụng trong cuộc sống thực.
VisioN

26

Trong trường hợp này, bạn có thể sử dụng một === undefinedso sánh:if(val === undefined)

Điều này hoạt động vì valluôn tồn tại (đó là một đối số chức năng).

Nếu bạn muốn kiểm tra một biến tùy ý không phải là đối số, nghĩa là hoàn toàn không thể xác định, bạn phải sử dụng if(typeof val === 'undefined')để tránh ngoại lệ trong trường hợp valkhông tồn tại.


16

Lưu ý rằng typeof luôn trả về một chuỗi và không tạo ra lỗi nếu biến đó hoàn toàn không tồn tại.

function A(val){
  if(typeof(val)  === "undefined") 
    //do this
  else
   //do this
}

1
Để so sánh chuỗi, tôi nghĩ rằng chúng ta cần sử dụng ===thay vì==
Sreeram

@Sreeram cả hai đều so sánh, chỉ bằng những cách khác nhau ... điều này sẽ hoạt động tốt
RGB

10

Tôi biết tôi đến trễ để trả lời hàm nhưng jquery có chức năng xây dựng để thực hiện việc này

if(jQuery.type(val) === "undefined"){
    //Some code goes here
}

Tham khảo tài liệu API jquery của jquery.type https://api.jquery.com/jQuery.type/ cho cùng.


3

Bạn có thể sử dụng kỹ thuật tốc ký để kiểm tra xem nó không xác định hay không

 function A(val)
 {
   if(val || "") 
   //do this
 else
 //do this
 }

Hy vọng điều này sẽ giúp bạn



1

khi tôi đang kiểm tra " typeof obj === undefined", sự alert(typeof obj)trở lại object, mặc dù obj không được xác định. Vì obj là loại Objecttrở lại của nó Object, không undefined.

Vì vậy, sau nhiều giờ thử nghiệm, tôi đã chọn kỹ thuật dưới đây.

if(document.getElementById(obj) !== null){
//do...
}else{
//do...
}

Tôi không chắc tại sao kỹ thuật đầu tiên không hoạt động. Nhưng tôi đã hoàn thành công việc của mình bằng cách sử dụng này.


0

Nếu bạn có tên của thành phần và không phải id, chúng ta có thể đạt được kiểm tra không xác định trên tất cả các thành phần văn bản (ví dụ) như bên dưới và điền chúng với giá trị mặc định là 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')
    }
  })

0

Tôi không chắc chắn đó là giải pháp tốt nhất, nhưng nó hoạt động tốt:

if($someObject['length']!=0){
    //do someting
}

0
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);
    }
}

Hãy thử này ~ tất cả các loại kiểm tra


0

Bạn có thể sử dụng hai cách 1) if ( val == null ) 2)if ( val === undefine )

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.