2012-09-25 7 views
5

違いはTypeErrorとにReferenceError

TypeError: ... is undefined 

ReferenceError: ... is not defined 

間のdiffernceは何ですか?

+0

ECMAScript標準は、各エラータイプがどのシナリオで発生するかを定義します。これらのシナリオの完全なリストについては、[ここをクリック](http://ecma-international.org/ecma-262/5.1/#sec-15.11.6.3)を参照してください。 –

+0

これらのエラーをスローするコード例を提供できますか? –

答えて

10

ReferenceErrorは、まったく存在しない変数を使用しようとすると発生します。

TypeErrorは、変数が存在する場合に発生しますが、実行しようとしている操作は、その変数に含まれている値の型に適していません。詳細なメッセージに「定義されていません」と表示された場合は、値が特別なundefinedの値を持つ変数を持っていて、そのプロパティにアクセスしようとすると、これが発生します。

これに関連する議論については、http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/を参照してください。

7

シックスJavaScriptエラータイプ

のJavaScript 1.5仕様は、6つの主要エラータイプを定義し、次のように

EvalError:のeval()関数が誤った方法で使用される場合を上げます。

RangeError:数値変数が許容範囲を超えた場合に発生します。

ReferenceError:無効な参照が使用された場合に発生します。

SyntaxError: JavaScriptコードの解析中に構文エラーが発生した場合に発生します。

TypeError:変数の型が期待どおりでない場合に発生します。

強いテキストURIError:encodeURI()またはdecodeURI()関数が不正に使用された場合に発生します。

3

は、次のコードを考えてみましょう:

function foo(){ 
var d=1234; 
console.log(d.substring(1,2));  
} 
foo(); 

この次ています出力:

例外:例外TypeError:d.substringは、私たちが間違った型(番号)を使用していたので、これは機能 ではありません(文字列が必要な部分文字列)。TypeErrorオブジェクトは、値が期待される型でない場合のエラーを表します。これは、出力を次のようしているだろう

function foo(){ 
var d=1234; 
console.log(c); 
} 
foo(); 

例外:にReferenceError:cは が定義されていない変数「C」のための参照は、ローカルまたはグローバルのいずれかのスコープ内に存在しないと、我々はまだあるためですReferenceError例外は、存在しない変数にアクセスするとスローされます。

関連する問題