web-dev-qa-db-ja.com

javascript / jQueryにphpのissetのようなものがありますか?

Javascript/jQueryに変数が設定されているかどうかを確認するものがありますか? phpでは、isset($variable)を使用してこのようなことを確認します。

ありがとう。

71
gautamlakum

この式を試してください:

typeof(variable) != "undefined" && variable !== null

これは、変数が定義されていてnullでない場合に当てはまります。これは、PHPのissetの動作と同等です。

次のように使用できます。

if(typeof(variable) != "undefined" && variable !== null) {
    bla();
}
133
Emil Vikström

PHP JSのJavaScript isset()

function isset () {
    // discuss at: http://phpjs.org/functions/isset
    // +   original by: Kevin van     Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: FremyCompany
    // +   improved by: Onno Marsman
    // +   improved by: Rafał Kukawski
    // *     example 1: isset( undefined, true);
    // *     returns 1: false
    // *     example 2: isset( 'Kevin van Zonneveld' );
    // *     returns 2: true
    var a = arguments,
        l = a.length,
        i = 0,
        undef;

    if (l === 0) {
        throw new Error('Empty isset');
    }

    while (i !== l) {
        if (a[i] === undef || a[i] === null) {
            return false;
        }
        i++;
    }
    return true;
}
9
Oleg

typeofは、私が考える目的を果たすでしょう

if(typeof foo != "undefined"){}
3
DanneManne

プロパティが存在するかどうかを確認したい場合: hasOwnProperty が方法です

また、ほとんどのオブジェクトは他のオブジェクトのプロパティであるため(最終的にwindowオブジェクトにつながる)、これは値が宣言されているかどうかを確認するのに役立ちます。

3
zzzzBov

当然のことながら、そうではありません...ただし、グーグルで次のようになりました: http://phpjs.org/functions/isset:454

2

http://phpjs.org/functions/isset:454

phpjsプロジェクトは信頼できるソースです。多くのjs同等のphp関数が利用可能です。私は長い間使用しており、これまでのところ問題は見つかりませんでした。

2
Sandeepan Nath

問題は、未定義の変数を関数に渡すとエラーが発生することです。

つまり、引数として渡す前にtypeofを実行する必要があります。

私がこれを行うために見つけた最もクリーンな方法は次のようなものです:

function isset(v){
    if(v === 'undefined'){
        return false;
    }
    return true;
}

使用法:

if(isset(typeof(varname))){
  alert('is set');
} else {
  alert('not set');
}

これで、コードははるかにコンパクトで読みやすくなりました。

次のようなインスタンス化されていない変数から変数を呼び出そうとすると、エラーが発生します。

isset(typeof(undefVar.subkey))

したがって、これを実行する前に、オブジェクトが定義されていることを確認する必要があります。

undefVar = isset(typeof(undefVar))?undefVar:{};
1
Dieter Gribnitz

@emil-vikströmの答えに加えて、variable!=nullおよびvariable!==null(またはtypeof(variable)!="undefined"についてもvariable!==undefinedのチェックが真になります。 )。

0
user2619604

これらの回答のそれぞれの一部は機能します。質問が尋ねていたように、それらをすべて「isset」関数にコンパイルし、PHPでのように機能します。

// isset helper function 
var isset = function(variable){
    return typeof(variable) !== "undefined" && variable !== null && variable !== '';
}

使用方法の使用例を次に示します。

var example = 'this is an example';
if(isset(example)){
    console.log('the example variable has a value set');
}

それはあなたがそれを必要とする状況に依存しますが、私はそれぞれの部分が何をするか分解させてください:

  1. typeof(variable) !== "undefined"は、変数が定義されているかどうかを確認します
  2. variable !== nullは変数がnullかどうかをチェックします(一部の人々は明示的にnullを設定し、それが正しいとnullに設定されているとは思わない、その場合、この部分を削除します)
  3. variable !== ''は、変数が空の文字列に設定されているかどうかを確認します。空の文字列がユースケースの設定としてカウントされる場合、これを削除できます。

これが誰かを助けることを願っています:)

0
stuyam

ここに :)

function isSet(iVal){
 return (iVal!=="" && iVal!=null && iVal!==undefined && typeof(iVal) != "undefined") ? 1 : 0;
} // Returns 1 if set, 0 false
0
Mr Bill