2011-08-15 8 views
1

この現象は混乱しています。変数がJavaScriptで動作していないか確認してください。

if (variable name) 
{ 
    ... do this... 
} 

のようにするといいと思いました。しかし、変数が定義されていない場合、私は 'ReferenceError:変数を見つけることができません: "変数名を取得し、elseブロックは実行されません。 。?。私はそれをテスト作業の任意の提案

あなたは typeofでカッコを必要としない
if(persons_name) 
{ 
    var name = persons_name; 
} 
else 
{ 
    var name = "John Doe"; 
} 

答えて

3
if (typeof persons_name !== 'undefined') { 
    ... 
} else { 
    ... 
} 

+0

このようなコードは、存在しない変数を参照する実際の問題を難読化します。そして、それは質問の "偽の"値のテストと同等ではありません。 – user113716

+1

著者は 'false'値について何も指定しませんでしたが、変数の存在について話しました。変数が定義されているかどうかを確認するには、私のコードが正しいです。 –

+0

'if(変数名)'は単なる存在のテストではなく、 'undefined'のテストではなく、「偽の」値のテストでもあります。 'typeof persons_name!== 'undefined''は宣言されていない変数を間違って参照しようとしているという事実を扱っていません。それはハックで問題に絡む。より良い解決策は、エラーの情報に注意し、変数を適切に宣言することです。 – user113716

0

var name;を言って、あなたは、変数を定義し、そしてvar name = "john doe";を言って、あなたはそれに割り当て値。

2

プロパティとは異なり、未修飾の名前は使用する前に定義する必要があります。だからあなたはグローバル変数persons_nameを探していた場合は、

if (window.persons_name) 

を書くことができそしてpersons_nameが存在しなかった場合には、未定義と評価されてしまうからです。代わりに、person_nameが存在すると予想した場合は、単にpersons_nameを宣言することもできます。

var persons_name; 

これは、すでに存在する場合、persons_nameの値を変更しません。

+0

私はその2番目の部分を知らなかった。 – aepheus

0
var name = (typeof persons_name !== 'undefined' || !(!!persons_name)) ? 
    persons_name : 
    'John Doe'; 
関連する問題