JavaScript-語句学習

43259 ワード

JavaScript-語句学習
ステートメントは、プログラムを制御するための論理、流れなどです.ステートメントは、breakcontinueなどの簡単であってもよく、forwhileループなどの複雑であってもよい.今日はJavaScriptの文の内容を勉強しに来ました.
  • if
  • whileとdo-while
  • for
  • for-iとfor-of
  • continueとbreak
  • label
  • with
  • switch
  • if文ifブロックの中に語句が一つしかない場合、こう書いてもいいです.
    if (true) console.log('hello,lilei');
    else console.log('hello,hanmeimei');
    
    複数の語句:
    if (true) {
        console.log('hello');
        console.log('lilei');
    }else{
        console.log('hello');
        console.log('hanmeimei');
    }
    
    しかし、より良い理解と整合性のために、私は一般的に括弧を入れました.else ifと組み合わせて使用する:
    const age = 10;
    if(age >= 60){
        console.log('Old');
    }else if(age >= 18){
        console.log('Adult');
    }else{
        console.log('Young');//     Young
    }
    
    else ifは複数回入れ子ができますが、一般的にはそうではありません.入れ子が多すぎるとelse-if文に変更できます.
    whileとdo-whileswitch:先に判断して実行し、以上のコードはwhileが成立しないため、出力10
    let i = 10;
    while(i < 10){
        i++;
    }
    console.log(i);//10
    
    i<10:先に実行した後に判断して、doの循環体のコードは少なくとも一回実行するので、第1回のdo-whileは11に増加してから、条件を満たしていないと判断して、循環を終了して、出力11
    let i = 10;
    do {
        i++;
    } while(i < 10);
    console.log(i);//11
    
    for文i循環文の文法は以下の通りである.
    for(init; condition; step){
        //   
    }
    
    forサイクルの実行プロセスは、次のようなものである.
    1. init:   
    2. while(condtion){
        //     
        //step
    }
    
    forサイクルでは、initは一回しか実行されません.その後、condition条件を循環的に判断します.本当であれば、循環体のコードを実行します.
    for(let i = 0; i < 3; i++){
        console.log(i);//0 1 2
    }
    
    上記の規則により、for文に書き換えることができます.
    let i = 0;
    while(i < 3){
        console.log(i);//0 1 2
        i++;
    }
    
    whileの出力結果と同じです.for にはいくつかの形の変形がある.
    1.省略for
    let i = 0;//   init
    for( ; i < 3 ; i++){
        console.log(i);//0 1 2
    }
    
    initはすでにiの前に初期化されているので、for の中では省略することができる.
    2.省略for
    for(let i = 0; i < 3; ){
        console.log(i);//0 1 2
        i++;//   step
    }
    
    stepは循環体に書いてありますので、step文では省略できます.
    3.全部省略します
    次のように、これは実際にデッドサイクルを作成しました.
    for(;;){
    	console.log('    ');
    }
    
    for-iとfor-offor は、オブジェクト属性を巡回するために使用されます.
    for(property in object){
        //  
    }
    
    次の例では、studentオブジェクトの3つの属性名for-inを出力します.
    let student = {
        name:'lilei',
        age:15,
        gender:'male'
    }
    for(let prop in student){
        console.log(prop);//name age gender
    }
    
    name,age,genderはES 6導入です.Aray、Map、Setなどを遍歴することができます.
    let arr = ['a','b','c']
    for(let item of arr){
        console.log(item);//a b c
    }
    
    for-offor-inの違い:
  • for-ofは、一つのオブジェクトを巡回するためのSymbol以外のエニュメレート・属性であり、出力順序は不確定
  • である.
  • for-inは、反復可能オブジェクト
  • を巡回巡回巡回巡回するために使用される.
    上の例はfor-ofで書いてもいいです.
    let arr = ['a','b','c']
    for(let prop in arr){
        console.log(arr[prop]);//a b c
    }
    
    for-inで1つの配列を巡回することは推奨されていません.for-inが出力する順番には注意が必要です.出力順序は属性によって作成された順序ではないので、次の例を見てください.
    let students = {
        '1':'lilei',
        '3':'liming',
        '2':'hanmeimei'
    }
    for(let id in students){
        console.log(students[id]);
    }
    
    出力結果は、for-inで、作成順序とは異なり、オブジェクトの属性lilei hanmeimei limingがこの規則を満たしている場合:propMath.trunc(Number(prop)).toString() === propに従ってNumber(prop)で順次出力され、そうでなければ作成された順序で上記の例のstudentsのid属性が出力される.
    Math.trunc(Number('1')).toString() === '1'
    Math.trunc(Number('2')).toString() === '2'
    Math.trunc(Number('3')).toString() === '3'
    
    したがって、 サイクルでは、属性を数字に戻してから、小さい順に出力します.
    属性が上記の規則を満たしていない場合、for-inの出力順序は属性がコード内で作成される順序である.
    let students = {
        '001':'lilei',
        '003':'liming',
        '002':'hanmeimei'
    }
    for(let id in students){
        console.log(students[id]);
    }
    
    何故なら
    Math.trunc(Number('001')).toString() !== '1'
    Math.trunc(Number('002')).toString() !== '2'
    Math.trunc(Number('003')).toString() !== '3'
    
    したがって、for-inは、属性の作成順序に従って出力される.
    contineとbreak
  • for-inは、このサイクルを終了する
  • .
  • lilei liming hanmeimeiは、現在のサイクル
  • を終了する.
    次の例のcontinueは、このサイクルを終了し、breakの場合、このサイクルを終了し、次のサイクルを開始する.
    for(let i = 0; i < 10; i++){
        if(i === 5){
            continue;
        }
        console.log(i);//0 1 2 3 4 6 7 8 9
    }
    
    continueでは、現在のサイクルが終了され、i=5では、forループが直接終了される.
    for(let i = 0; i < 10; i++){
        if(i === 5){
            break;
        }
        console.log(i);//0 1 2 3 4
    }
    
    label文break文は主にcontinueとbreak文と結合して使う.
    例えば実際のプロジェクトでは、このような状況が発生します.
    let flag = false;
    let num = 0;
    for (let i = 0; i < 10; i++) {
        if (flag) {
            break;//     
        }
        for (let j = 0; j < 10; j++) {
            if (i === 5 && j === 5) {
                flag = true;
                break;//     
            }
            num++;
        }
    }
    console.log(num);//55
    
    i=5の時に、すべてのサイクルを飛び出す必要があります.前に述べたように、labelは現在のi=5 && j=5サイクルから飛び出すので、第1のループを飛び出すには識別情報を追加して判断を支援する必要があります.
    let num = 0;
    first:
        for (let i = 0; i < 10; i++) {
            for (let j = 0; j < 10; j++) {
                if (i === 5 && j === 5) {
                    break first;//  first
                }
                num++;
            }
        }
    console.log(num);//55
    
    breakは、forと組み合わせて使用される場合には、上記の例と同様の役割を果たす.
    with文labelは、コードのスコープを特定のオブジェクトに設定することである.
    let student = {
        name : 'lilei',
        age : 15
    }
    //    
    console.log(student.name);//lilei
    console.log(student.age);//15
    //  with  
    with(student){
        console.log(name);//lilei
        console.log(age);//15
    }
    
    labelは、studentオブジェクトを包むので、このスコープでstudentオブジェクトの属性にアクセスするときは、continueプレフィックスを省略することができる.訪問するオブジェクト属性が特に多い場合は、withを使用することで冗長性が低減され、使いやすくなります.
    switch文with文は、条件判定分岐が多い場合、その特有の利点を発揮することができる.
    let age = 10;
    if(age === 10){
        console.log(10);//10
    }else if(age === 20){
        console.log(20)
    }else if(age === 30){
        console.log(30);
    }else{
        console.log('  ');
    }
    
    プログラムの中にはたくさんのstudent.があって、読みにくいし、分かりにくいです.この例をwithに変えて解決してもいいです.
    let age = 10;
    switch (age) {
        case 10:
            console.log(10); //    10
            break;
        case 20:
            console.log(20);
            break;
        case 30:
            console.log(30);
            break;
        default:
            console.log('  ');
            break;
    }
    
    ここで、switch文の後にif-elseが追加されているのを見ましたが、switchを追加しないと後で実行されます.
    let age = 10;
    switch (age) {
        case 10:
            console.log(10); //  10,  break,      
        case 20:
            console.log(20); //  20,  break,      
        case 30:
            console.log(30); //  30, break,  switch  
            break;
        default:
            console.log('  ');
            break;
    }
    
    case文に複数の条件を組み合わせる:
    let age = 10;
    switch (age) {
        case 10:
        case 20:
            console.log(10 + ' '+ 20); //  10 20
            break;
        case 30:
            console.log(30);
            break;
        default:
            console.log('  ');
            break;
    }
    
    caseは、式としてもよい.
    let age = 10;
    switch (true) {
        case age === 10:
            console.log(10); //  10
            break;
        case age === 20:
            console.log(20);
            break;
        case age === 30:
            console.log(30);
            break;
        default:
            console.log('  ');
            break;
    }
    
    ここに来てJavaScript文の簡単な紹介は終わりました.次はJavaScript関数の知識を勉強します.
    参照
  • MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements
  • javascript.info:https://javascript.info/object