2016-09-10 4 views
-4

私は、変数を持っているmyNiceVarそれを呼び出すことができます、私はmyNiceVar値&長さをチェックする必要があり、myNiceVar変数には、JavaScriptコンパイラのために、これは変数が定義されている意味が、まだプロパティ 'length'が未定義の変数の長さをチェックする方法は?

var myNiceVar; 
 

 
if(myNiceVar.length){ 
 
    console.log("I have value!"); 
 
}else{ 
 
    console.log("I am empty"); 
 
}
を任意の値を持たない、単なる未定義です

今JavaScriptが返されます。

Uncaught TypeError: Cannot read property 'length' of undefined

どのようなものをチェックすると、エラーに

+3

これを試してみてください: ''(myNiceVar && myNiceVar.length)場合。 – redneb

+0

@redneb私の問題を解決したロシアの友人に感謝 – user6816684

+0

好奇心から、なぜ私はロシア人だと思いますか?私のユーザ名はロシア語で何かを意味しますか? – redneb

答えて

-1

を取得していない(と、それはタイプである)この1

var myNiceVar; 

if (myNiceVar !== null && typeof myNiceVar === 'object' && 'length' in myNiceVar) { 
    console.log("I have value!"); 
} else {...} 
0

タイプundefinedの項目を試してみても何length性質を持っていない - 文字列型の項目のみをし、配列do。したがって、@rednebのように、長さをチェックする前に条件を拡張して偽の値でないかどうかを確認してください。 lengthがキーである場合は、typeofをチェックすることができ

if (myVar && myVar.length) { ... } 
2

'object'に等しいと。 nullは、プロパティがないオブジェクトであるため、nullを最初にチェックすることを忘れないでください。null

var myNiceVar; 
 

 
if (myNiceVar !== null && typeof myNiceVar === 'object' && 'length' in myNiceVar) { 
 
    console.log("I have value!"); 
 
} else { 
 
    console.log("I am empty"); 
 
}

関連する問題