javascriptフロー制御ステートメント(2)

オペレーター

演算子は演算子とも呼ばれ、割り当て、比較を実装し、算術演算を実行するために使用されます。

javascriptの一般的な演算子

  • 算術演算子
  • 比較演算子
  • 論理演算子
  • 代入演算子
  • インクリメントおよびデクリメント演算子

算術演算子

2つの変数または値に対して算術演算を実行するために使用されます

<script>
    // 算数运算符包括加减乘除 取余等等
    console.log(1 + 1);
    console.log(2 - 1);
    console.log(1 * 6);
    console.log(6 / 3);
    console.log(6 % 3);

    // 在算数运算符中 浮点数的精度会产生细微的差距,不要拿两个浮点数相比较
    console.log(0.1 + 0.2);
    console.log(0.7 * 100);

    console.log(0.1 + 0.2 == 0.3)
</script>

ここに画像の説明を挿入

予防

  • jsでは、2つの浮動小数点数を直接比較することはできません
  • jsの演算の順序では、乗算と除算が最初に計算され、次に加算と減算が計算され、括弧が最初に計算されます。

数が割り切れるかどうかを判断する方法は?

余数为0 说明这个数可以被整除

数値の演算子識別子で構成される式は、式と呼ばれます

戻り値

式は最終的に結果を返します。この結果は戻り値と呼ばれます。

     var  num = 1 + 1 
上述代码中,这样的式子便叫做表达式,右边的公式计算完毕后有一个返回值,这个返回值赋值给左边的num

単項演算子

単項演算子は、プレタイプとポストポジションタイプに分けられます。これらは主に変数のインクリメントおよびデクリメント操作を実現するために使用され、変数と組み合わせて使用​​する必要があります。

前置詞演算子

事前入力演算子は、最初にインクリメント(デクリメント)してから操作を実行します

プレインクリメント演算子:最初にインクリメントしてから、操作を実行します


    <script>
        //前置型运算符 先自增(自减) 再进行运算
        var num = 10;
        ++num;
        console.log('num的值:', num) //11

        var num2 = ++num + 5;
        console.log('num2的值:', num2) //17
    </script>

ここに画像の説明を挿入

事前デクリメント演算子:最初にデクリメントしてから、操作を実行します

 <script>
        //前置自减运算符  
        var num = 20;
        --num;
        console.log('num的值:', num); //19

        var num2 = --num + 5;
        console.log('num2的值', num2); //23
    </script>

ここに画像の説明を挿入

ポスト演算子

最初に元の値を計算してから、インクリメントまたはデクリメント操作を実行します

ポストインクリメント演算子:最初に元の値を計算し、次にxiを自動インクリメントします

<script>
    //后置型自增运算符  先原值运算,再自加
    var num = 2;
    num++;
    console.log('num的值:', num); //3

    var num2 = num++ + 2;
    console.log('num2的值:', num2) //5

    var num3 = num++ + 1;
    console.log('num3的值:', num3) //5
</script>


ここに画像の説明を挿入

ポストデクリメント演算子:最初に元の値を計算してから、デクリメントします


<script>
    //后置自减运算符 进行原值计算 再自增
    var num = 6;
    num--;
    console.log('num的值:', num); //5

    var num2 = num-- + 1;
    console.log('num2的值为:', num2); //6

    var num3 = num-- + 1;
    console.log('num3的值:', num3); //5
</script>

ここに画像の説明を挿入

単項演算子の包括的な演習


    <script>
        //第一题
        var a = 5;
        ++a;
        var b = ++a + 6;
        console.log('b的值:', b); //13


        //第二题
        var c = 10;
        c++;
        var d = c++ + 2;
        console.log('d的值:', d); //13


        // 第三题
        var e = 10;
        var f = e++ + ++e; //首先e++是10 然后自增1 于是++e变成12  所以值为22=10+12
        console.log('f的值:', f) //22
    </script>



ここに画像の説明を挿入

単項演算子の要約

  • 単項演算子は、主に変数に自己インクリメントまたは自己デクリメント操作を実現させるために、コード操作を単純化することです。
  • 単独で使用しても違いはありません
  • 事前インクリメント演算子と事前デクリメント演算子:最初にインクリメント(デクリメント)してから計算します
  • ポストインクリメント演算子とポストインクリメント演算子:最初に元の値を操作してから、増加(減少)します。
  • 実際の開発プロセスでは、より多くのポスト演算子が使用されます

比較演算子

比較演算子(関係演算子)は、主に2つのデータ演算子を比較するために使用され、比較演算の結果としてブール値を返します。

ここに画像の説明を挿入



<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //比较运算符 是用来进行两个数据的比较所使用的运算符 得出的结果为布尔值
        console.log(5 > 3) //true
        console.log(6 < 7) //true
        console.log(6 >= 5); //true 解析:因为6大于5  所以正确
        console.log(7 <= 8); //true 解析:因为7小于8 所以正确

        console.log(8 == '8') //true 解析:比较值而不比较数据类型
        console.log(8 != 9); //true
        console.log(8 !== 8) //false 
        console.log(8==="8") //false 解析:===要求数据类型和值都相等
    </script>
</head>




ここに画像の説明を挿入

論理演算子

論理演算子はブール演算を実行するために使用される演算子であり、結果もブール値です。実際の開発では、主に複数の条件を判断するために使用されます。


    <script >
        /* 
         *    逻辑运算符:是用来比较布尔值运算的运算符,其结果也是布尔值,开发中常用于多重条件的判断
         */
        console.log(5 > 3 && 3 < 5); //true 
        console.log(5 < 3 && 3 < 7); //false

        console.log(5 < 7 || 5 < 3); //true
        console.log(5 < 7 && 5 < 3) //false

        console.log(!true) //false
        console.log(!false) //true
    </script>



ここに画像の説明を挿入

論理演算子の要約

  • &&:両側が真の場合、結果は真になり、両側に偽があり、結果も偽になります
  • ||:両側が偽の場合、結果は偽になります。両側に真がある場合、結果も真になります。
  • !:否定!trueの結果はfalseです

論理演算子の要約


    <script>
        var num = 7;
        var str = "我爱你,亲爱的中国"
        console.log(num > 5 && num <= str.length) //true
        console.log(num < 5 && num <= str.length) //false

        console.log(!(str.length > 11)) //true
        console.log(!(num > 5 || str.length == num)) //fase
    </script>


ここに画像の説明を挿入

短絡効果

複数の式(値)がある場合、左側の式の値が判別できれば、右側の式の値演算は実行されません。

論理割り込みの論理積

ここに画像の説明を挿入

  <script>
        console.log(234 && 456); //456
        console.log(0 && 440) //0
        console.log('' && 254 && 546); //""
    </script>

ここに画像の説明を挿入

論理割り込みの論理OR

構文:式1 ||式2

  • 式1が真の場合、式1の値を返します。
  • 式1がfalseの場合、式2の値を返します(論理ANDと比較できます)。
	<script>
        console.log(234 || 456); //234
        console.log(0 || 440) // 440
        console.log('' || 254 || 546); //254
    </script>

ここに画像の説明を挿入

代入演算子

変数にデータを割り当てる演算子。代入演算子と呼ばれます。

ここに画像の説明を挿入

  <script>
        var num = 20;
        num += 5;
        console.log(num); //25


        var num2 = 6;
        num2 *= 6;
        console.log(num2) //36

        var num4 = 20;
        num4 %= 4;
        console.log(num4) //0
    </script>

ここに画像の説明を挿入

演算子の優先順位

ここに画像の説明を挿入

  • 単項演算子!優先度が高い
  • 論理積が論理積よりも大きい

オペレーターシーケンスの演習(1)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>练习1</title>
</head>

<body>

</body>
<script>
    console.log(4 >= 6 || '人' != '阿凡达' && !(12 * 2 == 144) && true)
        /* 
        解析:4 >= 6 || '人' != '阿凡达' && true && true
            false|| true && true && true
             true
        结果:true
            
         */

    var num = 10;
    console.log(5 == num / 2 && (2 + 2 * num).toString() === '22')
    /*

    * 解析:5==num/2&&(2+2*num).toString()==='22'
            5==num/2&&'22'==='22'
            5==5&&'22'==='22'
            true
     结果:true

     */
</script>

</html>

ここに画像の説明を挿入

オペレーターシーケンスの演習(2)


    <script>
        var a = 3 > 5 && 2 < 7 && 3 == 4;
        console.log(a)
            /* 
            解析:a=false && true && false
            结果:a= false
             */



        var b = 3 <= 4 || 3 > 1 || 3 != 2
        console.log(b);
        /* 
            解析:b= 3 <= 4 || 3 > 1 || 3 != 2
                  b= 3 <= 4 || 3 > 1 || true
                  b= true || true || true
            结果:true
         */



        var c = 2 === "2"
        console.log(c);
        /* 
            解析:=== 用来比较数据类型和值是否相等  所以为false
         */


        var d = !c || b && a;
        console.log(d)
            /* 解析: d = !c ||b && a;
                      d = true||b && a;
                      d = true||true && false;
                      d= true
               结果为true

             */
    </script>


ここに画像の説明を挿入

フロー制御ステートメント

簡単に言えば、制御コードシーケンスが異なる構造シーケンスで実行されることを意味します

フロー制御ステートメント:シーケンス構造ブランチ構造ループ構造

フロー制御ステートメントのシーケンス構造

javascriptでは、コードの実行順序は上から下に順番に実行され、この実行順序は順次構造と呼ばれます。

分岐構造

コードを上から下に実行する際、さまざまなパスのコードがさまざまな条件に従って実行され、さまざまな結果が得られます。

ここに画像の説明を挿入

2つのブランチ構造がjavascriptで提供されています

  • ifステートメント
  • switchステートメント

ifステートメント

文法

if(条件表达式) {
	//执行的语句
	}

注:条件式がtrueの場合、ステートメントは実行されます。条件式がfalseの場合、ステートメントは実行されません。
ここに画像の説明を挿入

   <script>
        if(true) {
            console.log('条件表达式为真,则执行语句');
        }

        if(false) {
            console.log('条件表达式为假,则不执行语句');
        }
    </script>

ここに画像の説明を挿入

二重分岐ステートメントの場合

ここに画像の説明を挿入
文法

 if(条件表达式) {
        //执行的语句
    }else {
        //执行的语句
    }

予防

  • ifおよびelseの1つのステートメントのみを実行できます
  • 他に何もない{}

ifダブルブランチステートメントのインターネットカフェケース

 要求:弹出一个输入框,用户输入自己的年龄,如果大于等于18岁,提示可以进入网吧,如果小于18,则提示用户不能进入网吧

アイデアは次のとおりです

  • 1.入力ボックスをポップアップし、ユーザーが入力した値を変数として保存します
  • 2. if文を使用して判断を下し、ユーザーの年齢に応じて異なる文を実行します。


    <script>
        var userName = Number(prompt("请输入年龄")); //Number():将字符串类型转换成Number类型
        if (userName >= 18) {
            alert("恭喜你,可以进入网吧")
        } else {
            alert("对不起,你不能进入网吧")
        }
    </script>

ここに画像の説明を挿入

二分岐ステートメントがうるう年と平年かどうかの判断

提示:能被4整除且不能整除100的为闰年(如2004年就是闰年,1901年不是闰年)或者能够被 400 整除的就是闰年

アイデアは次のとおりです

  • 1.ユーザーは年を入力し、ユーザーが入力した値を変数の形式で保存します
  • 2. ifステートメントを使用して、さまざまな条件に従ってうるう年と通常の年を判断します

    <script>
        var userName = Number(prompt("请输入年份"));
        if (userName % 4 == 0 && userName % 100 != 0 || userName % 400 == 0) {
            alert("闰年")

        } else {
        
            alert('平年')


        }
    </script>

ここに画像の説明を挿入

マルチブランチステートメントの場合

シナリオ:複数の条件の判断に適用可能


if(条件表达式1) {
    语句1;
}else if(条件表达式2) {
    语句2;
}else if(条件表达式3) {
    语句3;
    .....
}else {
    //以上代码不成立执行此处代码
}

予防

  • さまざまな条件に応じて、さまざまなコードパスが実行され、最終結果が得られます。これは、複数を選択するプロセスです。
  • else ifの後に条件式が追加され、elseの後に条件式がない
ifマルチブランチステートメントの達成事例

ここに画像の説明を挿入



    <script>
        var source = Number(prompt("请输入分数"))
        if (source >= 90) {
            alert('A')
        } else if (source >= 80) {
            alert('B')
        } else if (source >= 70) {
            alert('C')
        } else if (source >= 60) {
            alert("D")
        } else {
            alert('E')
        }
    </script>




ここに画像の説明を挿入

三項式

三項式は、いくつかの簡単な条件付き判断を行うことができます。三項演算子で構成される式は、三項式と呼ばれます。

構文は次のとおりです

条件式?式1:式2条件式がtrueの場合、式1の値を返し、条件式がfalseの場合、式2の値を返します。


   
   

ここに画像の説明を挿入

三元式0の補集合

三項式を使用する必要があります

アイデアは次のとおりです

  • 1.入力ボックスがポップアップし、ユーザーは0から59までの数字を入力します
  • 2.0〜9の数字の前に0を追加し、10より大きい数字には何もしません。
  • 3.変数を使用して、戻り値と出力を受け入れます(プログラム内で処理されます)
    <script>
        var userName = Number(prompt("请输入1~59之间的数字"))

        var result = userName <= 9 ? '0' + userName : userName;
        alert(result)
    </script>



ここに画像の説明を挿入

switchステートメント

switchステートメントはマルチブランチステートメントであり、さまざまな条件ステートメントを実行してさまざまな結果を取得することは、1つを選択するプロセスです。

予防

  • ifマルチブランチステートメントは判断にのみ使用され、switchステートメントは主に特定の値のマッチングに適しています
  • スイッチ:スイッチ。ケース:オプション。
  • switchステートメントの後の変数の値がcaseの後の値と一致する場合、caseの後のステートメントが実行されます
  • 値が一致しない場合は、デフォルトに従ってステートメントを実行します
  • switchステートメントの後の式は変数です。
  • ブレークを書くことを忘れないでください、さもなければそれは常に実行されます。
switchステートメントのフルーツケース

要件:ユーザーが必要な果物を入力すると、果物の価格が画面に表示されます。

アイデアは次のとおりです

  • 入力ボックスがポップアップし、ユーザーは希望する果物を必要としています
  • ユーザーが入力した値を変数の形式で保存します。切り替え後の条件式の値がケース後の値と一致すると、対応する果物の価格がポップアップ表示されます。
  • 中断することを忘れないでください。そうしないと、プログラムは実行を継続します。


    <script>
        var fruit = prompt('请输入需要的水果');
        switch (fruit) {
            case "苹果":
                alert("苹果3.5/斤");
                break;
            case "香蕉":
                alert("香蕉5.5/斤");
                break;
            case "榴莲":
                alert("榴莲10.5/斤");
                break;
            default:
                alert("找不到此水果")
        }
    </script>


ここに画像の説明を挿入

switchステートメントとifelseifステートメントの違い

  • スイッチは特定の値のマッチングに使用され、ifelseステートメントは条件付きの判断に使用されます
  • スイッチが値を決定した後、プログラムに直接実行され、ifステートメントを順番に判断する必要があります(実行効率はわずかに低くなります)
  • ブランチが少ない場合は、ifelseを使用する方が効率的です

おすすめ

転載: blog.csdn.net/weixin_45419127/article/details/111215553