2012-02-19 5 views
5

Javascriptの動作が奇妙です。Javascript:スコープ付きコードの場合、式が実行を継続する場合はfalse

ifステートメントの式がfalseと評価されても、if blockのコードが実行され続けます。ここで

は、コードスニペットです:

Firebug

任意のアイデア:ここ

if (view.leftCols !== null) { 
    var leftCols = view.leftCols.split(','); 

    for (var lc = 0; lc < leftCols.length; lc++) { 
     var lcv = leftCols[lc].split(':'); 
     var lcol = lcv[0]; 

     Array.add(allCols, lcol); 

     try { 
      var lwidth = lcv[1] - MyWorkGrid.getColWidth(lcol); 

      if (lcol === 'Edit') { 
       if ($.browser.msie && parseInt($.browser.version) <= 8) { 
        lwidth = 23; 
       } 
      } 

      // this if statement fails. 
      if (lwidth > 0) { 
       grid.SetWidth(lcol, lwidth); 
      } 
     } catch (e) { 
     } 

     grid.MoveCol(lcol, 0, 1, 1); 
    } 
} 

は私のFirebugのスクリーンショットですか?

+1

本当に起こることはありませんので、コードを投稿する方がよいでしょう。そのスクリーンショットは判読不能です。 – Pointy

+1

読み取り不能なスクリーンショット、pls。 "if"で使用されている変数のコードと現在の値を提供します。ああ、ちなみに、コンピュータの前にいる人間はいつも*私は何度も何度も自分自身を見つけます:) –

+1

ただの前提ですが、おそらく火かき棒はスクリプトの古いバージョンをキャッシュしています。実際に実行されているものではありません... –

答えて

12

Firebugで強調表示されているにもかかわらず、が実際にが実行されていますか? Firebug(そしてChromeデバッガの初期のバージョン)では、この行が実際に実行されることなく、コードの行を強調表示しているように見えることがありました。

だから私はそれ本当に実行かどうかを確認するためにif声明の体内にconsole.log("lwidth = " + lwidth);のような明確な何かを(挿入したい。答えはFirebugのは、単にコードせずに、誤って現在のように、その行を示す/ハイライト表示されている可能性があり実際に。

+3

真。そのツールはFireBUGと呼ばれています... – user123444555621

+0

あなたは正しいです。 if文の中にブレークポイントを設定した場合。 'lwidth <= 0'のときに決して到達しません...神がFirebugを助けます! – Moon

+0

@ムーン:それはうれしいですね。問題を再現する簡単なテストケースがあれば、おそらく[報告する]価値があるでしょう(http://code.google.com/p/fbug/issues/list)。数年前に私が見たときに(私はFirebugをしばらく使用していませんでしたが)私がそうしたのであれば、おそらくあなたはそれに遭遇していないでしょう。 (申し訳ありません。):-) –

-1

実行され、その上それが唯一の強調表示された行以上の受け入れ答えで述べたように。強調表示されているコードブロックの最後の行が実際に実行されていないのです。

1* var a=0;b=0;c=0; 
2* if(false){ 
3>  a++; 
4>  b++; 
5*  c++; 
6> } 
7> 
8* console.log(a+b+c); // will output 0; 

Firebugのは、ライン上でステップインしますsと1と2の間を移動し、ライン5に進むが、変数a、b、またはcをインクリメントしない場合、それらはすべて0のままである。

(p。コメントはできませんので、2013年の詳細を記入して投稿してください)

+0

何ですか?なぜあなたが言ったことを言ったのか分かりません! – Moon

+0

申し訳ありません。それは一年後でしたが、私は他の人が同じ奇妙なfireBugの行動にぶつかったかもしれないと思っていました。私が持っていた...そして、受け入れられた答えは、コードが実際に実行されていなかったことを実感しました。それは私の最初の投稿であり、stackoverflowは私にコメントをさせませんでしたので、おそらくあなたを混乱させるでしょう。 – JJones

関連する問題