- Pythonのお勉強 Part51 [転載禁止]©2ch.net
469 :デフォルトの名無しさん[sage]:2016/07/17(日) 06:58:47.44 ID:pSsgY/Tx - >>465
Pythonでは、JavaScriptであるような、関数の巻き上げが無いの?
|
- + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
177 :デフォルトの名無しさん[sage]:2016/07/17(日) 07:56:59.16 ID:pSsgY/Tx - >>151-156
JSでは、ブラウザ(実行環境)側のGUIスレッドと、 君が書いたJSのソースコードの、2つのスレッドがある while(true){}のような、無限ループをすると、君が書いたJSから、 ブラウザ側へ制御を渡す、タイミングがないから、描画もされない。 これを実行環境を除いて、シングルスレッドと言う function f(){ 〜処理 setTimeout(f, 0); } 一方、setTimeoutを使うと、イベントキューに投入だけして、関数fは、すぐにリターンする。 関数はスタックに積まれていないから、10万回以上再帰しても、スタックオーバーフローにならない 関数fがリターンしたら、ブラウザ側へ制御が移って、画面描画・入出力が行われ、 イベントキューから、次のイベントを取り出して、処理する setTimeoutに、0msを指定しても、必ず一旦、ブラウザ側へ制御が移るので、ブラウザが処理できる。 ただし、0msを指定しても、実際には最低でも、4msかかる
|
- + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
179 :デフォルトの名無しさん[sage]:2016/07/17(日) 08:56:27.15 ID:pSsgY/Tx - 沢山スレッドが出来ても、無限ループを抜けて、関数もリターンしていないと、
ブラウザ(実行環境)側へ制御が移らず、 結局スレッドも作られないから、シングルスレッドと同じになる 非同期という意味は、実行環境のイベントキューへ、 イベントを投入だけして、関数fは、すぐにリターンする そこで一旦、ブラウザ側(UIスレッド)へ制御が移って、様々な処理をこなせることが重要
|
- スレ立てるまでもない質問はここで 143匹目 [無断転載禁止]©2ch.net
574 :デフォルトの名無しさん[sage]:2016/07/17(日) 09:29:18.05 ID:pSsgY/Tx - Effective C# 4.0
読んだことはないけど、Effective と付く本は、良書が多い
|
- + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
181 :デフォルトの名無しさん[sage]:2016/07/17(日) 10:45:47.12 ID:pSsgY/Tx - 画面があるものは、全部同じ。
Androidでもそう。 UIスレッドと、自分の書いたソースコードの、2つのスレッドがある ゲームループも同じ。 1秒に30フレームなら、33.3ms内に、自分のコードの処理を終わらせて、 UIスレッドに制御を移さないと、画面が再描画されず、駒落ちする 自分が書いたソースコードの部分は、シングルスレッドになるから、 どこかでUIスレッドに制御を移さないと、イベントが処理されない
|
- Pythonのお勉強 Part51 [転載禁止]©2ch.net
474 :デフォルトの名無しさん[sage]:2016/07/17(日) 13:26:24.27 ID:pSsgY/Tx - >>471
JSには、変数の巻き上げもあるけど、関数の巻き上げもある。 関数宣言よりも先に、関数呼び出しを書ける f(); function f(){} でも、関数式よりも先に、関数呼び出しは書けない。以下はエラー f(); var f = function(){}
|
- Pythonのお勉強 Part51 [転載禁止]©2ch.net
476 :デフォルトの名無しさん[sage]:2016/07/17(日) 15:29:27.05 ID:pSsgY/Tx - >>467
Django のスレは、WEBプログラミング板にあるよ http://tamae.2ch.net/test/read.cgi/php/1323960422/l50
|
- + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
201 :デフォルトの名無しさん[sage]:2016/07/17(日) 15:42:47.20 ID:pSsgY/Tx - 実際に、何日差があるかなんて、関係ないよ
うるう年の2/29生まれなら、3/1で年齢が繰り上がる。 2/28生まれなら、2/28 12/31生まれなら、12/31 1/1生まれなら、1/1 年は年だけで、別に計算すればいい
|