jQueryで「未定義」の値を確認する方法


172

重複の可能性:
JavaScript javascript undefined compare で未定義のオブジェクトプロパティを検出しています

次のように、未定義の変数のチェックを追加する方法:

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

回答:


379

JQueryライブラリは、特定のJavaScript機能を簡素化および統合するために特別に開発されました。

ただし、変数をundefined値に対してチェックする必要がある場合、JavaScriptにはtypeof演算子があり、シンプルで高速かつクロスプラットフォームであるため、特別なメソッドを作成する必要はありません。

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

変数またはその他の未評価のオペランドのタイプを示す文字列を返します。このメソッドの主な利点は、と比較してif (value === undefined) { ... }typeof変数valueが存在しない場合に例外が発生しないことです。


12
@nahum jQueryはJavaScriptライブラリです。これは別のプログラミング言語ではありません。
VisioN 2013年

9
lol omgあなたは本当にこれにコメントしていますか?私は同じ人であることを知っています。しかし、私は彼が$ .isUndefined(Object)のようなjQueryにある種のメソッドが存在するかどうかを知りたいと思います。値trueまたはfalseを返します。typeofはフレームワークなしの単なるJavaScriptです。
ncubica 2013年

私の問題の1つは、次のような("#myId")ものでした。このようなことをしている場合は、本当に必要なものを確認してください。typeof ("#myId")=== "undefined" b。または:typeof ("#myId").val() === "undefined"
アルベリチ14

3
@Alberici ("#myId")文字列定数に他なりません。常に定義され、タイプがになり"string"ます。で作成された実際のjQueryオブジェクトを意味する場合$("#myId")、それは常に"object"(jQueryが正しくリンクされている場合)として定義されます。IDを持つDOM要素の存在はmyIdで評価できif ($("#myId").length > 0) { ... }、その値が空でないかどうかの確認はで行うことができますif ($("#myId").val()) { ... }。これらの条項はどちらも、実際にはこの質問のトピックに関連していません。
VisioN 2014

1
@ user3284463回答で述べたように、変数が存在しないvalue === undefined場合、simple は例外を発生さvalueせます。したがって、実際に何を使用するかは完全にあなた次第です。
VisioN 2016年

26

この場合、=== undefined比較を使用できます。if(val === undefined)

これはval常に存在するため機能します(関数の引数です)。

引数ではない、つまりまったく定義されていない任意の変数をテストしたいif(typeof val === 'undefined')場合valは、存在しない場合に例外を回避するために使用する必要があります。


16

typeofは常に文字列を返し、変数がまったく存在しない場合でもエラーを生成しないことに注意してください。

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

1
文字列比較では、===代わりに使用する必要があると思います==
Sreeram

@Sreeram両者は異なる方法で比較を行います...これは正常に機能します
RGB

10

私は関数に答えるのが遅いのを知っていますが、jqueryにはこれを行うための組み込み関数があります

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

jquery.type https://api.jquery.com/jQuery.type/の jquery APIドキュメントを参照してください。


3

省略テクニックを使用して、それが未定義であるかnullであるかを確認できます。

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

これがあなたを助けることを願っています



1

typeof obj === undefined」をテストしているとき、objが定義されていなくても、がalert(typeof obj)返されobjectます。objはObject戻り値の型なのでObject、ではありませんundefined

だから何時間ものテストの後、私はテクニックの下を選びました。

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

最初のテクニックがうまくいかなかった理由はわかりませんが、これを使用して作業を完了します。


0

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')
    }
  })

0

それが最良の解決策かどうかはわかりませんが、うまく機能します。

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

これを試してください〜すべてのタイプチェッカー


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.