LoginSignup
toshirodejapon
@toshirodejapon

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

break文が機能しない理由

Q&AClosed

解決したいこと

ここに解決したい内容を記載してください。

break文が機能していないようで、原因がわかりません。
for文が最後まで実行されてしまいます。

有識者の方、教えていただけますと幸いです。

該当するソースコード

JavaScript
<script>
    const str = ['a','b','c'];
    const num = [10,20,30];

    alphabet:
    for(let i = 0; i < str.length; i++) {
        numeric:
        for(let j = 0; j < num.length; j++) {
            console.log(`アルファベット:[${str[i]}]`,`数値:[${num[j]}]`);

            if(str[i] === 'b' && num[j] === '30') {
                break alphabet;
            }
        }
    }
    // > アルファベット: [a] 数値: [10]
    // > アルファベット: [a] 数値: [20]
    // > アルファベット: [a] 数値: [30]
    // > アルファベット: [b] 数値: [10]
    // > アルファベット: [b] 数値: [20]
    // > アルファベット: [b] 数値: [30]
</script>
0

4Answer

↓これが原因でしょう。

-           if(str[i] === 'b' && num[j] === '30') {
+           if(str[i] == 'b' && num[j] == '30') {
1

Comments

  1. @toshirodejapon

    Questioner

    ご確認ありがとうございます!無事、修正できました!
    なぜ===ではだめなのか教えていただけますでしょうか?

  2. 解決したのであれば、本問をクローズしましょう。

if(str[i] === 'b' && num[j] === '30') {

num[j] === 30 としたら('30' という文字列ではなくて 30 という数値と比較したら)どうなりますか?

== ではなく === を使ったのはそれなりの理由があったのでは?

1

Comments

  1. @toshirodejapon

    Questioner

    ありがとうございます!理解することができました!

  2. 解決したならクローズしてください

質問とは全く関係ありませんが、ソースコードの種類を示すには、こうする方法がありますよ。

エディタ
```js:javascriptのコード
var hoge = 1;
```

javascriptのコード
var hoge = 1;
0

Comments

  1. @toshirodejapon

    Questioner

    ありがとうございます!次回から使用させていただきます。

MORE ACCURATELY...

<script>
    const str = ['a','b','c'];
    const num = [10,20,30];

    alphabet:
    for(let i = 0; i < str.length; i++) {
        numeric:
        for(let j = 0; j < num.length; j++) {
            console.log(`アルファベット:[${str[i]}]`,`数値:[${num[j]}]`);

            if(str[i] === 'b' && num[j] === 30) {
                break alphabet;
            }
        }
    }
</script>

Well...
'30' is a "String" of value 30.
30 is a "Number" of value 30.
=== means value should be EQUAL and the type should be EQUAL too!
But == is not so accurate and sometimes get to be ambiguous of type judging.

So I suggest you to use === instead of == when you are writing code.

0

Your answer might help someone💌