JavaScriptでオブジェクトが存在することを確認する方法
次のように動作します。
if (!null)
alert("GOT HERE");
しかしこれはエラーを投げます:
if (!maybeObject)
alert("GOT HERE");
エラー:
maybeObject
は定義されていません。
未定義の変数に対してtypeof
演算子を安全に使用できます。
Nullを含む何らかの値が割り当てられている場合、typeofはundefined以外の何かを返します。 typeofは常に文字列を返します。
だから
if (typeof maybeObject != "undefined") {
alert("GOT THERE");
}
ここには多くの半分の真実がありますので、私はいくつかのことを明確にすることを考えました。
実際、変数が存在するかどうかを正確に判断することはできません(2行ごとにtry-catchブロックにラップする場合を除く)。
理由は、Javascriptがこの悪名高いundefined
name__の値を持っているからです。これは、変数が定義されていないことや、変数が存在しないことを意味しませんundefined !== not defined
var a;
alert(typeof a); // undefined (declared without a value)
alert(typeof b); // undefined (not declared)
したがって、存在する変数と、undefined
name__型を報告できない別の変数の両方があります。
@Kevinの誤解については、null == undefined
。これは型強制によるものであり、Crockfordがこの種のことを確信していないすべての人に常に厳密な等価演算子===
を使用して偽の可能性のある値をテストするよう指示し続ける主な理由です。 null !== undefined
は、期待するものを提供します。また、foo != null
は、変数がundefined
name__でもnull
name__でもないかどうかを確認する効果的な方法であることに注意してください。もちろん、読みやすくすることができるため、明示的にすることもできます。
オブジェクトが存在するかどうかを確認するように質問を制限する場合、配列オブジェクトを考慮しない場合を除いて、typeof o == "object"
を使用することをお勧めします。これは、object
name__混乱した。 typeof null
がobject
name__を与えることは言うまでもありませんが、これは単に間違っています。
typeof
name __、undefined
name __、null
name __、unknown
name__、およびその他のミステリーに本当に注意する必要がある主な領域は、Hostオブジェクトです。彼らは信頼できません。彼らは彼らが望むほとんどすべての汚いことを自由に行うことができます。したがって、可能であれば機能をチェックしてください。存在しない可能性のある機能を使用する唯一の安全な方法です。
あなたが使用することができます:
if (typeof objectName == 'object') {
//do something
}
もしそれがグローバルオブジェクトなら、if (!window.maybeObject)
を使うことができます。
二通り。
Typeofを使ってローカルオブジェクトをテストすることができます。
if (object !== "undefined") {}
ウィンドウオブジェクトを調べることで、グローバルオブジェクト(グローバルスコープで定義されたもの)をテストできます。
if (window.FormData) {}
あなたは "typeof"を使うことができます。
if(typeof maybeObject != "undefined")
alert("GOT HERE");
私はJavaScriptでnullチェックとしてif(maybeObject)
を実行していました。
if(maybeObject){
alert("GOT HERE");
}
そのためmaybeObject
- がオブジェクトである場合に限り、警告が表示されます。私のサイトに例があります。
https://sites.google.com/site/javaerrorsandsolutions/home/javascript-dynamic-checkboxes
上記のtypeOfの例をテストしたばかりで、動作しないものがあるので、代わりにこれを使用しました。
btnAdd = document.getElementById("elementNotLoadedYet");
if (btnAdd != null) {
btnAdd.textContent = "Some text here";
} else {
alert("not detected!");
}
私にとっては、これはDOMオブジェクトに対して機能しました。
if(document.getElementsById('IDname').length != 0 ){
alert("object exist");
}
オブジェクト/変数の存在をチェックすることとは別に、「最悪の場合」の出力を提供するか、少なくともそれをアラートにトラップして気付かれないようにすることができます。
エラーをチェックし、代替を提供し、そしてキャッチする関数の例。
function fillForm(obj) {
try {
var output;
output = (typeof obj !== 'undefined') ? obj : '';
return (output);
}
catch (err) {
// If an error was thrown, sent it as an alert
// to help with debugging any problems
alert(err.toString());
// If the obj doesn't exist or it's empty
// I want to fill the form with ""
return ('');
} // catch End
} // fillForm End
これを作成したのは、渡しているオブジェクトがx、x.m、x.m [z]、typeof x.m [z]である可能性があるため、x.mが存在しない場合はエラーで失敗します。
助けになれば幸いです。 (ところで、私はJSの初心者です)
!
演算子は!!
を2回使用できます。
if (!!maybeObject)
alert("maybeObject exists");
または!
が存在しない場合があります。
if (!maybeObject)
alert("maybeObject does not exist");
その存在のみを気にする場合(宣言されていますか?)、承認された答えで十分です:
if (typeof maybeObject != "undefined") {
alert("GOT THERE");
}
実際の値が必要な場合は、次を追加する必要があります。
if (typeof maybeObject != "undefined" && maybeObject != null ) {
alert("GOT THERE");
}
typeof( null ) == "object"
として
例えばbar = { x: 1, y: 2, z: null}
typeof( bar.z ) == "object"
typeof( bar.not_present ) == "undefined"
この方法では、null
でもundefined
でもないことを確認します。値が存在しない場合はtypeof
はエラーにならず、&&
短絡もエラーになりません。時間エラー。
個人的には、どこかにヘルパーfnを追加することをお勧めします(typeof()
を信頼しないようにしましょう):
function exists(data){
data !== null && data !== undefined
}
if( exists( maybeObject ) ){
alert("Got here!");
}
div alignmntタブ付きパネルを使用してTextboxの値を1フレームに設定してインラインフレームにします。つまり、まず最初に、必要な値を設定する前に、選択したタブ付きパネルのフレームが使用可能かどうか、または次のコードを使用しないで確認します。
Javascriptコード:
/////////////////////////////////////////
<script>
function set_TextID()
{
try
{
if(!parent.frames["entry"])
{
alert("Frame object not found");
}
else
{
var setText=document.getElementById("formx").value;
parent.frames["entry"].document.getElementById("form_id").value=setText;
}
if(!parent.frames["education"])
{
alert("Frame object not found");
}
else
{
var setText=document.getElementById("formx").value;
parent.frames["education"].document.getElementById("form_id").value=setText;
}
if(!parent.frames["contact"])
{
alert("Frame object not found");
}
else
{
var setText=document.getElementById("formx").value;
parent.frames["contact"].document.getElementById("form_id").value=setText;
}
}catch(exception){}
}
</script>
スレッドはかなり前に開かれました。その間、三項演算子を使うのが最も簡単な選択肢だと思います。
maybeObject ? console.log(maybeObject.id) : ""
if (n === Object(n)) {
// code
}
ゼロとNULLは暗黙的なポインタです。画面に算術演算、比較、または '0'を印刷しないのであれば、実際に入力する必要はありません。その暗黙の黙示のように。 typeofも同じ理由で必要ありません。時計。
if(obj)console.log( "exists");
私はnotの要求を見ませんでした、さもなければそれが含まれていないのでそこにあります。質問に収まらない余分なコンテンツが大好きです。簡単にしましょう。