• 締切済み

JavaScriptでどちらの書き方が実行速度が速いですか?

以下の2つの書き方は厳密には(内部処理のステップ的には)どちらが早いでしょうか? for (var i=0; i<10; i++) {  if (value == "dummy")  {   continue;  }  document.write(value); } for (var i=0; i<10; i++) {  if (value != "dummy")  {   document.write(value);  } }

みんなの回答

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

コンパイラがどんな変換を行うのかはっきりわからないので何とも言えませんが、valueが"dummy"の時はcontinueがある分、上の方が遅くなるのではないかなぁと思ったりします。

nihon_no_samurai
質問者

お礼

ありがとう!

回答No.1

if文が共に1回ですので同じと考えてよいかと思います。 jの数を10万回位にして経過時間を測定しては如何ですか。

nihon_no_samurai
質問者

お礼

ありがとう!

関連するQ&A

  • javascriptの九九の表の書き換えについて

    var a; for (a=1; a<10; a++) if (a<=1){ document.write("   "+a); }else{ document.write(" "+a);} document.write("<br>"); document.write("---------------------------------"); document.write("<br>"); var i, j; for (i=1; i<10; i++) { document.write(i+"|"+" "); for (j=1; j<10; j++) { var k = i*j; if ( k > 81 ) { break; } if (k>=10){ document.write(" "+k+" "); }else { document.write(" "+k);} } document.write("<br />"); } forを使った九九の表はできたのですが これをwhileを使ったコードに書き換えるにはどうしたらいいでしょうか?

  • JavaScriptのonsubmitについて

    大変申し訳ありませんが、とても困っているため書かせていただきました。 「次へ」「戻る」のボタンがある画面で、下記JavaScriptをかきました。 すると、アラートメッセージが表示されるとそれ以降の処理はまったく動かず ブラウザを再読み込みしない限り、次へなどのボタンがききません。 return falseをしているせいなのだと思いますが、回避策を教えていただけないでしょうか。 処理は、 <!-- script --> <script type="text/javascript" language="JavaScript"> <!-- document.getElementById("Form").onsubmit = function() { var errkey = document.getElementsByName('item3'); var keyArray = new Array(); for( i=0; i<19; i++ ) { if (errkey[i].checked){ keyArray.push(i); } } for( i=0; i<keyArray.length; i++ ) { ansnum = keyArray[i]; check1 = document.getElementsByName('item1'); check2 = document.getElementsByName('item2'); if (flgCheck1[ansnum].checked) continue; if (flgCheck2[ansnum].checked) continue; alert('同じ');   return false; } } // --> </script>

  • javascriptのsplitでエラーが・・・

    valueの値をsplitを使って連想配列に変形しようと思ったのですが、、エラーが出てお手上げ状態です。上手く動かす方法はないでしょうか? ブラウザはie9を使っています。 var value = "mode=test&text=test&amount=123"; var value2 = value.split("&"); var response = ""; for(var i=0; i<=value2.length; i++) { value3 = value2[i].split("="); response[value3[0]] = value3[1]; } document.write(response);

  • javascript getelementsbytagnameについてです。

    var keisan=document.getElementsByTagName('input'); for(i=0;i<=keisan.length;i++){ if(keisan[i].getAttribute('value').match('Click')){ keisan[i].onclick=add(); } } function add() { var a = document.getElementById('number1').value; var b = document.getElementById('number2').value; var c = a - -b; alert(c); } 上のプログラムを入れると、"keisan[i]はnullです"といったエラーがでます。 kaisan.length=0になっているみたいです…。 xhtmlだと作動するのですが、htmlだと作動しません。 対応してないのでしょうか? 宜しくお願いいたします。

  • javascriptに関する質問です

    9×9のます目一つ一つに・を表示させるプログラムをつくっているのですがなかなかうまくいきませんどなたかご教授ください <script language="JavaScript" type="text/javascript"> <!-- document.write("<center>"); document.write("<h1>・の表</h1>"); document.write("<table border>"); var i; var j; for (i =・;i=<9 ){ document.write("<tr>"); for(j =・;j=<9 ){ document.write("<td>"); document.write(i * j) document.write("</td>") } document.write("</tr>"); } document.write("</table>"); //--> </script>

  • JavaScriptで九九

    繰り返し処理を用いて画像のように表示させたい場合はどこを修正すればいいですか? <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>九九</title> </head> <body> <script> for (var i = 1; i <= 9; i++) { for (var j = 1; j <= 9; j++) { document.write(`${i} * ${j} = ${i*j}<br/>`); } } </script> </body> </html>

  • お願いしますjavascriptです

    javascript 初心者なのですが、どうしてもわからないため、 ご教授お願いたします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>おみくじ</title> </head> <body> <script type="text/javascript"> <!-- //0~4の乱数を作る //0:大吉, 1:中吉, 2:小吉 ,3:吉, 4:凶 var rnd = Math.floor(Math.random() * 5) //おみくじの判定 switch (rnd){ case 0: var fortune = "大吉"; break; case 1: var fortune = "中吉"; break; case 2: var fortune = "小吉"; break; case 3: var fortune = "吉"; break; default: var fortune = "凶"; break; } //おみくじの表示 document.write("今日の運勢: " + fortune + "<br />"); //金運の表示 document.write("金運: "); var money = Math.floor(Math.random() * 5) + 1; for (var i = 0; i < money; i++) { document.write("(ダイヤ)"); } document.write("<br>"); //恋愛運の表示 document.write("恋愛運: "); var love = Math.floor(Math.random() * 5) + 1; for (var i = 0; i < love; i++) { document.write("&hearts;"); } document.write("<br>"); //健康運の表示 document.write("健康運: "); var health = Math.floor(Math.random() * 5) + 1; var i = 0; while (i < health){ document.write("(クラブ)"); i++; } document.write("<br>"); //--> </script> </body> </html> このソースに、分岐だと考えますが、 大吉が出た時は、金運、恋愛運、などのマークが3つ以上に設定、逆に 今日ならば各マークが3つ以下に設定するには Javascriptでどういう風に記述すればよいでしょうか。

  • JavaScriptのプルダウン処理について

    最近JavaScriptを勉強し始め、うるう年に対応した日付プルダウン処理が可能、という事なので、ネットを参考に以下のようにしてみました。 //月によって日数を変更する処理 function setDay(year,month,day) { var y = parseInt(document.getElementById(year).value,10); var m = parseInt(document.getElementById(month).value,10); // 閏年判定 if (2 == m && (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))) { //月の最終日の変数 var last = 29; } else { var lastday = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); last = lastday[m-1]; } // 要素取得と初期化 var obj = document.getElementById(day); obj.length = 0; // 日の要素を追加 for (var i = 0; i < last; i++) { obj.options[obj.length++] = new Option(i + 1, i + 1); } } これでうるう年対応とする事は出来たのですが、恥ずかしい事にネットの情報なので、何をしているのかおぼろげにしか理解出来ません。大変申し訳ないのですが、このソースについて解説して頂けないでしょうか?どうぞよろしくお願い致します。

  • javascriptのボタン作成について

    javascript勉強中の身なのですが、わからない所があったのでご教授お願いいたします。 勉強のため購入した本にあったサンプルの一部に、下記のような英字のボタンを作成する箇所がありました。 <script type="text/javascript"> var alpha="abcdefghijklmnopqrstuvwxyz"; var i; for (i=0;i<26;i++){ document.write("<input type='button' onclick='disp(this)' value='"+alpha.charAt(i)+"' />"); if (alpha.charAt(i)=="m") { document.write("<br />") }; } </script> 上記で問題なく動作しているのですが、input内のvalue='"+alpha.charAt(i)+"'の+が何故必要なのかよくわかりません。 もしかしたら基本的な事なのかもしれないですが、なぜ+が必要なのか疑問に思っている部分なのでお手数ですがご教授お願いします。

  • JavaScriptでループできない

    let target = document.getElementById('create_new_user'); let name = document.getElementById('i_new_uname'); let pass = document.getElementById('i_new_passwd'); let pass2 = document.getElementById('i_new_passwd2'); let sakusei = document.getElementById('b_create_user'); let a = new Event('mousedown'); let e = new Event('mouseup'); for (let step = 0; step < 10; step++) { target.dispatchEvent(a); target.dispatchEvent(e); name.value = 'らき⭐︎すた' + Math.random(); pass.value = 'bbbb2' pass2.value = 'bbbb2' sakusei.dispatchEvent(a); sakusei.dispatchEvent(e); } これでループしても一回しか繰り返えされません。なぜでしょうか? ちなみにforの処理の中に他の処理も混ぜたら他の処理はちゃんと動きました。 なぜこれだけ一回しかできないのでしょうか?

専門家に質問してみよう