<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>無限ループ &#8211; トレントナビゲーション【Torrentナビ】</title>
	<atom:link href="https://affiliate-kousotu.com/archives/tag/%e7%84%a1%e9%99%90%e3%83%ab%e3%83%bc%e3%83%97/feed" rel="self" type="application/rss+xml" />
	<link>https://affiliate-kousotu.com</link>
	<description>Torrent・海外サイト・ソフト情報など</description>
	<lastBuildDate>Fri, 09 Aug 2019 03:09:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>google chromeでブラウザが無限ループしてしまったときの対処法・停止改善法！！JavaScriptを使用</title>
		<link>https://affiliate-kousotu.com/archives/921</link>
		
		<dc:creator><![CDATA[mainn12]]></dc:creator>
		<pubDate>Fri, 09 Aug 2019 03:09:16 +0000</pubDate>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[無限ループ]]></category>
		<guid isPermaLink="false">http://affiliate-kousotu.com/?p=921</guid>

					<description><![CDATA[&#160; Web開発に限らずプログラミングで厄介なこと・・・それは無限ループです。 一度ループしだすと止まらないし、フリーズの原因にもなるから面倒なものなんですよね。 特にWeb開発だとJavaScriptを使うこと...]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Web開発に限らずプログラミングで厄介なこと・・・それは<span class="my_bold"><strong>無限ループ</strong></span>です。</p>
<p>一度ループしだすと止まらないし、フリーズの原因にもなるから面倒なものなんですよね。</p>
<p>特にWeb開発だとJavaScriptを使うことが多いのでそこで無限ループが起きやすいです。</p>
<p>ということでその<span class="my_bold">無限ループがブラウザで起きた時の対処法</span>を紹介</p>
<p>&nbsp;</p>


<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span id="i">無限ループが起こる原因</span></h2>
<p>無限ループが起きてしまう原因もいろいろあって代表的なのが次のようなこと</p>
<ul class="my_ul">
<li><span class="my_bold">whileやforループ内での間違った終了条件</span></li>
<li><span class="my_bold">そもそもループ内で終了条件が指定していない</span></li>
<li><span class="my_bold">同じイベントが何度も再帰的に呼び出される</span></li>
</ul>
<p>こういう原因で無限ループしてしまうのはJavaScriptでも同じです。</p>
<p>&nbsp;</p>
<p>それでJavaScriptで無限ループが起きてしまうと次の点で困ります。</p>
<ul class="my_ul">
<li><span class="my_bold">ブラウザがフリーズする</span></li>
<li><span class="my_bold">ページを閉じようと思っても閉じれない</span></li>
<li><span class="my_bold">最悪PCとかを再起動しないといけない</span></li>
</ul>
<p>さすがに最後の再起動は中々ないですが、ブラウザがフリーズするのは開発しててよくあります。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span id="i-2">ブラウザで無限ループを止めるには</span></h2>
<p>&nbsp;</p>
<h3><span style="color: #ff9900;">未処理の例外をスロー</span></h3>
<article id="answer0">
<div>
<p>無限ループを解く1つの方法は、未処理の例外をスローすることです。これにより、現在の呼び出しスタックの実行が停止します。 そうするために：</p>
<ol>
<li>debbugerを一時停止する</li>
<li>ループ内の有望なステートメント、例えば関数呼び出しを<code>foo.bar(args)</code>ます： <code>foo.bar(args)</code></li>
<li>コンソールで、スローする関数を上書きする： <code>foo.bar=function(){throw 42;}</code></li>
<li>デバッガのポーズ解除</li>
</ol>
<p>私のために働いた。 私は試していませんが、ゲッターやセッターをオーバーロードすることによって、関数呼び出しだけでなく、上で説明したやり方を割り当てや読み込みに使うことができると信じています。 また、変数をundefinedに設定することで、この変数のフィールドがループ内で使用されていると、致命的なエラーが発生する可能性があります。 例えば、 <code>delete foo.tab</code>は<code>foo.tab[42]</code>や<code>foo.tab.bar</code>ます。 何らかの理由で、単にコンソールに<code>foo=undefined</code>を書き込んだりしないでください（おそらく、fooという名前のコンソールウィンドウにローカルな変数を定義しています）。</p>
</div>
</article>
<article id="answer1">
<div class="float-left"></div>
<div>
<p>プロセスエクスプローラを実行し、多くのCPUを使用しているクロムプロセスを終了します。ページをクラッシュさせてリロードさせます&#8230;</p>
</div>
</article>
<article id="answer2">
<div class="float-left"></div>
<div>
<p>デベロッパーモードでは、リソースにアクセスしてスクリプトを見つけて、コピーしてテキストドキュメントまたは新しいウィンドウに貼り付けます。 リソース内で見つからない場合は、使用した変数またはコード行を検索してください。</p>
</div>
</article>
<article id="answer3">
<div class="float-left"></div>
<div>
<h3><span style="color: #ff9900;">開発者モードを使用せずに行う方法</span></h3>
<ul>
<li>新しいタブを開く</li>
<li>Shift-Escapeでタスクマネージャを開く</li>
<li>キルのタスク</li>
<li><strong>殺されたタブに戻るボタンを使用します</strong> （JSFiddleはスクリプトを実行しません）</li>
<li>バグを修正</li>
<li>更新</li>
</ul>
</div>
</article>
<p>&nbsp;</p>
<p>&nbsp;</p>


<article id="answer3">
<div>
<p>&nbsp;</p>
</div>
</article>
<h3><span id="i-2" style="color: #ff9900;">ブラウザで無限ループを止めるには</span></h3>
<p>ブラウザで無限ループを止める方法ですが簡単です。</p>
<p>ただし<span class="my_bold">Chromeブラウザ</span>を使っていることが条件です。</p>
<p>&nbsp;</p>
<p>①Chromeで  <span id="crayon-5d4ce1a29dd18126934510" class="crayon-syntax crayon-syntax-inline  crayon-theme-classic crayon-theme-classic-inline crayon-font-monaco"><span class="crayon-pre crayon-code"><span class="crayon-v">Shift</span></span></span>  +  <span id="crayon-5d4ce1a29dd1e565438900" class="crayon-syntax crayon-syntax-inline  crayon-theme-classic crayon-theme-classic-inline crayon-font-monaco"><span class="crayon-pre crayon-code"><span class="crayon-v">Esc</span></span></span>  キーを同時押し</p>
<p>そうすると次のようなタスクマネージャが出てきます。</p>
<img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-406" src="https://pisuke-code.com/wp-content/uploads/2018/09/chrome_task_manager.png" alt="" width="476" height="353" />
<p>②閉じたいプロセスを選んで &#8220;<span class="my_bold">プロセスの終了</span>&#8221; ボタンを押す</p>
<p>これだけでブラウザ全体を終了せずに特定のページだけ終了できます。</p>
<p>&nbsp;</p>
<h3><span style="color: #ff9900;">Javascriptなどを停止させる方法</span></h3>
<pre class="language-javascript"><code id="clipboardCopy0" class="language-javascript hljs" data-language="JavaScript"><span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>) {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-number">1</span>);
}</code></pre>
<p>のようにループしてしまった場合はページ全体が固まったようになってしまい、タブを強制的に閉じるしかないと思います。</p>
<p>デバッグの時に使えるか分かりませんが、whileループ処理を書くにはsetIntervalを使うといいと思います。</p>
<p>JavaScriptにはsleep関数がないので、setIntervalを使い、以下のように0.1秒おきに繰り返す処理を書くとsleep関数と同等に書けます。この場合は負荷が高くありません。</p>
<pre class="language-javascript"><button class="btnClipboardCopy js-clipboardCopy" title="このコードをクリップボードにコピー" data-clipboard-target="#clipboardCopy1"></button><code id="clipboardCopy1" class="language-javascript hljs" data-language="JavaScript">setInterval(<span class="hljs-function"><span class="hljs-keyword">function</span>() </span>{
    <span class="hljs-built_in">console</span>.log(<span class="hljs-number">1</span>);
}, <span class="hljs-number">100</span>);</code></pre>
<p>ちなみにsetIntervalの戻り値をclearIntervalすることで繰り返しを止めることも出来ます。</p>
<pre class="language-javascript p-boxQuestionInner__codeArea"><button class="btnClipboardCopy js-clipboardCopy" title="このコードをクリップボードにコピー" data-clipboard-target="#clipboardCopy2"></button><code id="clipboardCopy2" class="language-javascript hljs" data-language="JavaScript"><span class="hljs-keyword">var</span> count = <span class="hljs-number">0</span>;
<span class="hljs-keyword">var</span> interval_id = setInterval(<span class="hljs-function"><span class="hljs-keyword">function</span>() </span>{
    <span class="hljs-built_in">console</span>.log(count++);
    <span class="hljs-keyword">if</span>(count &gt; <span class="hljs-number">10</span>) {
      clearInterval(interval_id);
    }
}, <span class="hljs-number">100</span>);</code></pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>まとめ</h2>
<p>&nbsp;</p>
<p>ブラウザでの無限ループの対処法でした。</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
