質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

3回答

1010閲覧

JavaScriptの条件とbreak;について分からないことがあります。

U_x_U_ganja

総合スコア16

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/05/27 14:21

JavaScript

1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Document</title> 7</head> 8<body> 9 <script> 10 var N = 59; 11 var num = 2; 12 var result = true; 13 while (num < N) 14 { 15 if (N % num == 0) 16 {result = false; 17 break;} 18 num ++;} 19 if (result){document.write(N+'は素数です');} 20 else {document.write(N+'は素数ではありません');} 21 </script> 22</body> 23</html>

テキストを使ってjavascriptを勉強しています。参考コードに上のようなものがありました。
whileの繰り返し構文の勉強なのですが、二点while以外で理解できない部分があります。

・参考書には、ifの条件式満たす場合、break;でwhile構文を抜けます。と書いてありましたが、このbreak;という処理は、親構文(この場合、if構文を含んでいるwhile構文)があればそれらすべてを抜けるということですか?
それとも、筆者のミスで、if構文のみ抜けて、Nが59になるまで繰り返し、59になったらwhileの条件(num < N)= false となり、処理を実行せずにif(result){...へ進むのですか?結果以外のプログラムの動きが気になりました。

・条件(result)とはどういうことでしょうか。A<B などの比較演算子を用いた条件の真偽値の判断はわかるのですが、(真ならtrue,偽ならfalse)条件が(変数)だけだとどのように真偽値を判断すればいいのか分からず、困っています。。

よろしくお願いいたします (⸝⸝⸝•﹏•⸝⸝⸝)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2020/05/28 04:00

if文内に document.write を仕込めば、breakで抜けるのが if,while のどちらか判断出来るので確認してください。 ちなみに、「break で if を抜ける」と仮定すると、if (N % num == 0){result = false; break;} は break があってもなくても動作が変化しない事は理解していますか。
U_x_U_ganja

2020/05/28 17:17

具体的にどのようにdocumennt.writeを仕込むのでしょうか...すみません... 確かにそうですよね。言われてみればbreak;があってもなくてもどっちにしろifは抜けますよね。有難うございます。
think49

2020/05/28 23:03

ifで抜ける場合、whileで抜ける場合、の動作の差を想像して下さい。 - ループ回数が違います - ifを通過する回数が違います 従って、 - break直前: 「breakで抜けること」「num値」 - 終了時: 「num値」 を出力すれば、正解がはっきりします。
guest

回答3

0

とりあえずMDNでも読んでみましょう。ちなみにdocument.writeが使われている参考書は、かなり古いか著者がかなり古い可能性があるので、ここ数年以内に出版された書籍を探すことをお勧めします。

【break 文 - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Loop_Statements/break_Statement

【if...else - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/if...else

if 文は、指定された条件が truthy ならば文を実行します。条件が falsy なら、もう一方の文を実行することができます。

【Truthy - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN】
https://developer.mozilla.org/ja/docs/Glossary/Truthy

【Falsy - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN】
https://developer.mozilla.org/ja/docs/Glossary/Falsy

投稿2020/05/27 14:33

kei344

総合スコア69430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

U_x_U_ganja

2020/05/27 15:59

ご回答有難うございます。 掌田津耶乃さんのwebプログラミング実戦幽門という本(2020.1.29初刷り)を先日購入し使っているのですが著者が古い人なんですかね,,,泣 一通り終わったら、プログラムを書くのが面白いと感じたのでJavaScriptを他の入門書で学習しようと考えているのですが何かお勧めありますでしょうか,,, (⸝⸝⸝•﹏•⸝⸝⸝)
kei344

2020/05/27 16:22

(「幽門」ではなく「入門」では?)「試し読み」で見出しをざっと見ましたが、かなり駆け足で進む書籍のようなので、別途JavaScriptのみの入門書とHTML/CSSの入門書は押さえたほうが安全な気がします。(開発には必須の「デベロッパーツール(検証機能/開発者ツール)」について触れられているような見出しは無かったのですが、さらっと書かれている可能性はあります) JavaScriptは「デバッグ」について比較的丁寧に扱った本を、HTML/CSSはGridについて丁寧に扱った本を探してみてください。 【作りながら学ぶWebプログラミング実践入門 | 掌田津耶乃 | 工学 | Kindleストア | Amazon】 https://www.amazon.co.jp/dp/B083VV5TD7
AkitoshiManabe

2020/05/27 20:54

駆け足で進む内容の書籍であれば、MDNを「辞書的に活用して併読する」のは必須かもしれませんね。
U_x_U_ganja

2020/05/28 09:34

@kei344さん 確かにこれだけだとわからないことが多いので、デバッグとgridについて詳しく書かれている入門書(入門書ですねすみません...)を探してこようと思います! MDNというサイトも細かく書いてあったので、参考にしながら進めようと思います! 有難うございます(T . T)
U_x_U_ganja

2020/05/28 09:35

@AkitoshiManabeさん そうなんですね。有難うございます!参考にします。
guest

0

参考書には、ifの条件式満たす場合、break;でwhile構文を抜けます。と書いてありましたが、このbreak;という処理は、親構文(この場合、if構文を含んでいるwhile構文)があればそれらすべてを抜けるということですか?

それとも、筆者のミスで、if構文のみ抜けて、Nが59になるまで繰り返し、59になったらwhileの条件(num < N)= false となり、処理を実行せずにif(result){...へ進むのですか?結果以外のプログラムの動きが気になりました。

参考書の記載が正しいです。
breakが対象とする処理が限られるので。

break文

条件(result)とはどういうことでしょうか。A<B などの比較演算子を用いた条件の真偽値の判断はわかるのですが、(真ならtrue,偽ならfalse)条件が(変数)だけだとどのように真偽値を判断すればいいのか分からず、困っています。。

A < Bがわかるのであれば、その評価結果がtrueまたはfalseである事をまず理解して下さい。

if (result) については

var result = true;

trueで最初に初期化しています。
while文の中でbreakとなる時にresult = false;がセットされています。

つまり、while文を中断した場合はfalse、すべて通過した場合はtrueという事です。

なお、質問文のソースはインデントがおかしく、構造が理解しづらくなっています。
下記のようにインデントを揃えないと、どこまでwhile文に含まれるのか判断しづらいので、対応する{}の位置を揃え、その中を字下げするようにしましょう。

JavaScript

1 while (num < N) 2 { 3 if (N % num == 0) 4 { 5 result = false; 6 break; 7 } 8 num ++; 9 } 10 if (result) 11 { 12 document.write(N+'は素数です'); 13 } 14 else 15 { 16 document.write(N+'は素数ではありません'); 17 }

投稿2020/05/27 14:33

編集2020/05/27 14:39
gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

U_x_U_ganja

2020/05/27 15:40

ご指摘ありがとうございます。 独学だと暗黙の了解的なものがわからず本当に助かります;_;早速直してきました。 resultについては、自分で(変数)として条件を作って、変数=resultや、変数=falseとして真偽値の判定方法まで記述できるという解釈であっていますでしょうか( ᐡ. ̫ .ᐡ )?
gentaro

2020/05/27 17:19 編集

if (条件) { 式 } は「条件」がtrueの場合に『式』が実行される事はご存知でしょうか。 これはどの教科書にも書いてあると思いますが。 ここで var a = 1 var b = 2 if (a < b) { 式 } と書くと「式」が実行できるのは理解できてるんですよね? で、 var c = true if (c) { 式 } と書けるのがわからないという事ですか? 仮にわからないとして、実際にコードを書いて動作確認すれば理解できるはずなんですが、どこに疑問を持ってます?
gentaro

2020/05/27 17:25

こう言っちゃ何ですが、このレベルで質問をしないとわからないようであれば、このまま独学されるのは厳しいと思います。 オンラインでも構わないので、超基本的な事でも質問に付き合ってくれるスクール等を利用された方が良いです。
U_x_U_ganja

2020/05/28 09:26

ご回答、アドバイス有難うございます。すみません...trueを値として扱えることを知りませんでした。。。 検討してみます;_; 有難うございます。
guest

0

break;でwhile構文を抜けます。と書いてありましたが

書いてのとおりです。直近のwhile(やforswitch)を抜けます。ifは関係ありません。

投稿2020/05/27 14:25

maisumakun

総合スコア145192

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/05/27 14:28

> 条件が(変数)だけだとどのように真偽値を判断すればいいのか分からず JavaScriptの場合、false、null、''、0、NaN、undefined、(document.all)が偽として扱われる値です。これ以外はすべて真です。 https://developer.mozilla.org/ja/docs/Glossary/Falsy
U_x_U_ganja

2020/05/27 15:47

ご回答ありがとうございます。 (変数)=true; (変数)=false; などの様に真偽の判断を自分で記述して良いのですか? (変数)=true; という代入も記述を通過した場合は、if(変数)ときたときに、trueだから処理を実行していい!と安直に考えていいのでしょうか。 折り返しになり申し訳ありませんが教えていただけると助かります( ᵕ̩̩ㅅᵕ̩̩ )( ᵕ̩̩ㅅᵕ̩̩ )
maisumakun

2020/05/27 22:23

> 真偽の判断を自分で記述して良いのですか? はい、trueもfalseも単なる値です、自分で代入しても問題なく動作します。
U_x_U_ganja

2020/05/28 10:16

true,falseが値だと聞いてすごく納得しました!本当に有難うございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問