2017-08-22 23 views
-2

私は周りを見回し、この質問をしている人はいませんでした。たぶん私はちょうどここに何かが欠けているんだけど、私は次のコードを持っている:javascriptで三項演算子が偽であると定義されていないのはなぜですか?

return $type_cnts ? JSON.parse($type_cnts)[premType] : 0; 

私に

Uncaught ReferenceError: $type_cnts is not defined 

$type_cntsが定義されていないという事実は、それが偽作るため、行うべきではありませんスロー三項演算子はゼロを返しますか?

+0

コンテキストコードを掲載できますか? – clabe45

+4

'$ typec_cnts!== $ type_cnts'エラーメッセージはあなたに答えを与えています。 – spanky

+0

定義されていない場合は、グローバルでなければtypeofなしでその存在をテストするために三項演算子を使うことはできません。 – epascarello

答えて

1

宣言されていない変数にアクセスしようとすると、ReferenceErrorがスローされます。あなたが無価値、

var $type_cnts; 

で変数を宣言する場合は、あなたは三項演算子が動作するよ:

$type_cnts ? JSON.parse($type_cnts)[premType] : 0; // 0 

あなたがそれらにアクセスしようとすると、さらに、オブジェクトの未定義のプロパティがエラーをスローしません。 (常識)。そして、これはwindowオブジェクトに適用されますので、あなたが

window.$type_cnts ? JSON.parse($type_cnts)[premType] : 0; // no error 

にコードを変更しても、$type_cntsを宣言しない場合、その後、あなたのコードは、エラーをスローしません。

+0

そしてあなたはタイプミスです – epascarello

+0

@epascarelloどこですか? – clabe45

+0

typec_countsはtype_cntsでなければなりません。上記の問題を解決しました。 –

関連する問題