1

私はJavaScriptを学んでいて、コードベースでifステートメントのどの部分が冗長であるかを見つけました。

if(undefined === value || null === value || !value.toString)

toString(とを除いて)定義されundefinedていないものがjsにありnullますか?

4

1 に答える 1

1

そのコードの目的が値変数にtoStringメソッドが定義されているかどうかを確認することである場合、falseと評価される唯一のケースは値が定義されていない場合であるため、奇妙です。

私は自由にあなたのためにフィドル(http://jsfiddle.net/gnrcc/2/)を次のコードで作成しました:

var obj = new String("Hi, im an object"); // String object
var str = "Hello, im a primitive" // string primitive
var und; // undefined

// will output native method, string and object details
console.log(obj.toString, obj.toString(), obj); 
// will output native method, string and string
console.log(str.toString, str.toString(), str);  
// will get property undefined error
console.log(und.toString, und.toString(), und); 
  • すべてのオブジェクトには、(オブジェクトプロトタイプからの)toStringメソッドがあります
  • すべてのプリミティブは、メソッドが呼び出されたときに対応するオブジェクトによって自動的にラップされ、オブジェクトと同じ動作になります(編集:例外は明らかに未定義のプリミティブです)
于 2013-03-20T11:32:17.887 に答える