Javascript/jQueryに変数が設定されているかどうかを確認するものがありますか? phpでは、isset($variable)
を使用してこのようなことを確認します。
ありがとう。
この式を試してください:
typeof(variable) != "undefined" && variable !== null
これは、変数が定義されていてnullでない場合に当てはまります。これは、PHPのissetの動作と同等です。
次のように使用できます。
if(typeof(variable) != "undefined" && variable !== null) {
bla();
}
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;
}
typeofは、私が考える目的を果たすでしょう
if(typeof foo != "undefined"){}
プロパティが存在するかどうかを確認したい場合: hasOwnProperty が方法です
また、ほとんどのオブジェクトは他のオブジェクトのプロパティであるため(最終的にwindow
オブジェクトにつながる)、これは値が宣言されているかどうかを確認するのに役立ちます。
当然のことながら、そうではありません...ただし、グーグルで次のようになりました: http://phpjs.org/functions/isset:454
http://phpjs.org/functions/isset:454
phpjsプロジェクトは信頼できるソースです。多くのjs同等のphp関数が利用可能です。私は長い間使用しており、これまでのところ問題は見つかりませんでした。
問題は、未定義の変数を関数に渡すとエラーが発生することです。
つまり、引数として渡す前に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:{};
@emil-vikströmの答えに加えて、variable!=null
およびvariable!==null
(またはtypeof(variable)!="undefined"
についてもvariable!==undefined
のチェックが真になります。 )。
これらの回答のそれぞれの一部は機能します。質問が尋ねていたように、それらをすべて「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');
}
それはあなたがそれを必要とする状況に依存しますが、私はそれぞれの部分が何をするか分解させてください:
typeof(variable) !== "undefined"
は、変数が定義されているかどうかを確認しますvariable !== null
は変数がnullかどうかをチェックします(一部の人々は明示的にnullを設定し、それが正しいとnullに設定されているとは思わない、その場合、この部分を削除します)variable !== ''
は、変数が空の文字列に設定されているかどうかを確認します。空の文字列がユースケースの設定としてカウントされる場合、これを削除できます。これが誰かを助けることを願っています:)
ここに :)
function isSet(iVal){
return (iVal!=="" && iVal!=null && iVal!==undefined && typeof(iVal) != "undefined") ? 1 : 0;
} // Returns 1 if set, 0 false