0

次の if 句があります。

if(trackingEnabled && tracking) {
  // do something
}

どちらの変数も関数パラメーターです。変数がブール値として設定される場合trackingもあれば、そうでない場合もあります。

変数の型を調べると (値を渡さない場合)、それは単純なオブジェクトです。

私の質問は、関数に何も渡さないのに、追跡変数がブール値 (値は true) として解釈されるのはなぜですか?

4

1 に答える 1

2

コード全体(メソッド呼び出し)を貼り付けていただけますか。私はIE9、FF14、およびChrome 23で以下のコードを試しました.statemenetが実行されない場合は内部のコードを試しましたが、typeof bはメソッド呼び出しに対してそれぞれ未定義とオブジェクトのいずれかに評価されます。

function f(a,b){
 console.log("Type of b is " + typeof b);
 if(a && b){
     console.log(a);
     console.log(typeof a);
     console.log(b);
     console.log(typeof b);
 }
}
f(true);
f(true,null);

2 つの原因が考えられます

1)関数に何かが渡されました

2) 奇妙な Javascript 実行環境がある

于 2012-11-28T08:26:07.783 に答える