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

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

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

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

Q&A

解決済

6回答

1601閲覧

javascript 2以下の数値を求めています 解説お願い致します!

cal_1

総合スコア23

JavaScript

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

0グッド

1クリップ

投稿2021/08/31 22:00

編集2021/09/01 00:28

javascript

1var ok = [2, 0 , 8 , 8 , 6 , 5 , 8 , 5, 1, 3 ]; 2var no = 0; 3for(var i = 0; i < ok.length; i++){ 4 if(ok[i] <= 2){ 5 no++; 6 // console.log(no);1、2、3 7 // console.log(ok);[2, 0, 8, 8, 6, 5, 8, 5, 1, 3]×3 8 } 9 // console.log(no);1、❼2、❷3 10 // console.log(ok);[2, 0, 8, 8, 6, 5, 8, 5, 1, 3]×10 11} 12// console.log(no);3 13// console.log(ok);[2, 0, 8, 8, 6, 5, 8, 5, 1, 3]

上記のコードなのですが、以前から初期化に関して分りません。var no = 0;の事を初期化というのだと思いますが、なぜこういう挙動をするのか解説お願い致します。それぞれコンソールで調べてみたのですが、初期化とどうつながるのか分かりませんでした。
たまにvar stop;みたいなストップウォッチに書かれている変数定義みたいなものも分かりません。
これらの、初期化と、保持のための変数定義に関して解説お願い致します<(_ _)>

皆様ご迷惑お掛け致しました。今までなかなか質問の回答が来なかったので、少しイレギュラな質問となってしまいました。ライブラリなどの質問や細かい質問はなかなか回答が得られなかったので、今回少し曖昧な感じになってしまいました。皆さまのお知識ありがとう御座います。

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

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

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

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

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

y_waiwai

2021/08/31 22:05

なにが問題なんでしょうか
cal_1

2021/08/31 22:10

このコードに問題はないので、解説を求めております<(_ _)> var no = 0;と記載している初期化、コード中には記載していませんが、値の書いていないvar stop;ような保持のための変数定義。これらの解説を求めております。
maisumakun

2021/08/31 23:01

> なぜこういう挙動をするのか解説お願い致します。 どの部分がどのように動くのが疑問なのでしょうか?
cal_1

2021/08/31 23:27

失礼いたしました。 ifのローカル関数 // console.log(no);1、2、3ですが if(条件式){ 条件式がtrueの時処理 } と認識していますが、条件は配列の要素数が2以下の時。1,2,3,4...10 forのローカル関数の挙動、 // console.log(no);1、❼2、❷3 // console.log(ok);[2, 0, 8, 8, 6, 5, 8, 5, 1, 3]×10 var no = 0;のここ、いつ3が代入されたのでしょうか。 一連の流れがが分からないので、説明がおかしいと自分でも思います。 forの中でしょうか、no++を足し上げているからifのなかでしょうか。 no++を足し上げた上でforに代入されているという事なのでしょうか。 よくわからいなこと言ってる事もあると思いますがご回答お願い致します。
miyabi_takatsuk

2021/08/31 23:29

既に回答にある通り、 初期化(変数宣言)をせずに、 下行にて、 console.log(no); を実行してみれば、 なぜ初期化が必要なのか理解できると思いますが、 やってみましたか?
cal_1

2021/08/31 23:34

エラーが出たり、定義をしないと駄目ですよと出るのはもちろんコードでも出ます。 それではよくわからず、オブジェクトが生成されていないとか、その他のサイトでは見かけましたが、内部的な挙動を知りたいなと思っております。 順序が違うかもしれませんがご教授宜しくお願い致します。
miyabi_takatsuk

2021/08/31 23:41

> 内部的な挙動を知りたいなと思っております。 これを言ってしまうと、 varの仕様や、 JavaScriptの根っこの話までに発展してしまいます。 上記コメントの、 > var no = 0;のここ、いつ3が代入されたのでしょうか。 や、 > forの中でしょうか、no++を足し上げているからifのなかでしょうか。 no++を足し上げた上でforに代入されているという事なのでしょうか。 の、具体的な疑問の部分も、質問本部に記載して下さい。 質問文は編集できます。
cal_1

2021/08/31 23:46

失礼いたしました。 まだまだ不慣れでしたので申し訳ありません。 スペシャリストの方が集まっている存じていたので少し甘えてしまいました。 申し訳ありませんでした。
K_3578

2021/09/01 00:05

過去質問見てもなぜ一度も質問編集してないのかわからない、連続で投稿するのは禁止されては居ないけど、 同じような質問なら一つの質問にまとめる方が良いと思いますけど
cal_1

2021/09/01 00:08

ご回答ありがとうございます。 同じ質問はどれになりますでしょうか。
cal_1

2021/09/01 00:35

削除はご指摘前なので、mysqlもそうですがここの質問は回答が来ないので、しつこく質問しております。今回の質問もそうですが、回答が来るような感じで質問をしてみました。さくらかと思うくらい回答が来なかったので今回本当にユーザーがいるんだなと実感できました。 運営さんにも聞いてみましたが、回答が来ないので心配でした。今回の経緯です。ご心配、ご指摘ありがとうございます。そろそろお返事のペースが遅くなりますので、皆様に向けてもご報告致します。
cal_1

2021/09/01 00:46

わざわざありがとう御座います<(_ _)>
guest

回答6

0

「javascript 入門」でぐぐれば、初心者向けの解説記事がたくさんでてきます。
まずは、そこに出ている記事を一通り読んでみてください。
そしてその言語の基本的な文法を学びましょう。

そのうえで、わからないところがあるなら、その参考にしたページを提示した上で聞いていただければよろしいかと。

投稿2021/08/31 22:14

y_waiwai

総合スコア87784

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

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

cal_1

2021/08/31 22:19

分かりました(;_:)(´Д⊂ヽ( ;∀;)(´Д⊂ヽ
guest

0

ヒント: 『JavaScript 初期値』でggった結果

まず、JavaScriptで初期化して使う理由は、『初期化せずに使うとundefinedになっているから』です。

実際に試してみればわかるはずですが。

値の書いていないvar stop;ような保持のための変数定義

それはわかりません。

『ある小説に書いてあった、「はん」とはなんでしょうか』みたいなものです。
知らんがな。その小説読んでないし。みたいな。

プログラミングっていうのは『こう書けばいい』って言うものではありません。

ロジックを考え、そのロジックを独自の書き方で書き下し、ロジック違反があれば修正すること』です。

小説を書いたり、創作料理のレシピを書くことと一緒です。

なので、提示されていないことまで言われても分かりませんし、わかるのは書いた人だけです。

投稿2021/08/31 23:24

BeatStar

総合スコア4958

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

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

cal_1

2021/09/01 00:23

ご教授ありがとうござます。 変数と宣言に関して本日目を通してみます。 リンクありがとうございます。
guest

0

初期化せずに動かしてみたら分かることもあるのでは。目の前のコードだけでどうにかするのではなく、値を変えてみたり色々検証することで理解を深めることはできます。
むしろ「分からない」だけの状態で他者に解説を求めたところで「分かったつもり」以上にはならないです。
試した上で自身の理解が合ってるかどうかを聞くほうが良いです。

それに他人が書いたコードなので、本来の意図までは分かりませんよ。想像、勝手解釈の域を出ません。
となると、又聞きになるので本質的な理解には至れません。

投稿2021/08/31 22:42

m.ts10806

総合スコア80852

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

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

0

var no = 0var nono = 0という2つの処理から構成されています
var noの役割について、あくまで質問ユーザの今の本来の問題解決を優先して答えるならば、「変数noがvarという種類の有効範囲を持つことを定めている」と言うでしょう(詳細が考慮されていないことを意味するので、一緒に読む必要があります)。また、no = 0は、このケースではfor内の処理を行うために必要です。質問コード内のvar no = 0var noに置き換えた場合の結果を確認してみてください。このfor内の処理を理解することがもう一つの問題のようですが、単独で尋ねた質問が存在するように思われるので、ここでは言及しません。

投稿2021/09/02 08:22

編集2021/09/02 08:28
3_April_2021

総合スコア48

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

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

0

ベストアンサー

コメントの追記も加味して回答いたします。

var no = 0;のここ、いつ3が代入されたのでしょうか。

掲示のソースコードでは、
3を代入は行っていません。

forの中でしょうか、no++を足し上げているからifのなかでしょうか。

それが全てです。
それ以上でも以下でもありません。

まず、質問者さんは、
二行目で宣言しているno変数と、
forifの中で、インクリメントしている、
no++;no変数は、
同じ変数を指していることを理解しなければいけません。

そして、なぜ、同じ変数を指していることになるのかは、
スコープであったり、参照範囲を理解する必要があります。
それに関してはご自身でよくよく調べて勉強して下さい。

そうすれば、自ずと、
二行目の変数宣言が必要な理由が導かれるでしょう。

投稿2021/08/31 23:52

miyabi_takatsuk

総合スコア9528

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

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

cal_1

2021/08/31 23:58

ご回答ありがとうございます。 別で挙動について質問してしまったので、スコープの勉強をして出直します<(_ _)>
guest

0

質問に対する直接の回答ではないですが、自分でループを回さずに配列のメソッドを有効利用することもできます。

javascript

1var no = ok.filter(item => item <= 2).length;

投稿2021/08/31 23:02

maisumakun

総合スコア145192

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

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

cal_1

2021/09/01 00:21

コードのご提案ありがとうございます。 別で質問したのは急いで作成したので、意味が分からくなってしまいました。 削除要請していますのでこちらでご報告致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問