ステップ2:データタイプ演算子フロー制御文

7080 ワード

1.JavaScriptはいくつかのデータタイプを定義していますか?どれがオリジナルタイプですか?どれが複雑なタイプですか?元のタイプと複雑なタイプの違いは何ですか?
JavaScript言語の各値は、いずれもデータの種類に属しています.JavaScriptのデータタイプは全部で6種類あります.(ES 6には、第7のSymbolタイプの値が追加されました.)それぞれ:
数値(number)文字列(string)ブール値(bolean)undefined nullオブジェクト(object)の値、文字列、ブール値を元のタイプ(prmitive type)という値の対象を合成タイプ(複雑なタイプ)と呼びます.
2.typeofとinstance ofの役割と違い?
  • typeofは、所与の変数のデータタイプを検出することができますが、制約があり、Aray、Nullなどの特殊なオブジェクトに対してtypeofを使用して、すべてobjectに戻ります.また、typeofは、変数が存在するかどうかを判断したり、if(typeof v===undefined)が定義されていないかを判断したりするために使用できます.
  • typeofが配列とオブジェクト(object)の表示結果をすべてobjectとするなら、instance of(ユニークでない方法)を区別する必要があります.instance ofは、一つの変数がオブジェクトの例、例えばvar a=[];であるかどうかを判断するために使用されます.a instance of Arayはtrueに戻ります.
  • 3.どのように変数が数字、文字列、ブール、関数かを判断しますか?
    typeofを使用して、文字列に戻ります.この中では、定義されていない、数字、文字列、ブール、関数、それぞれ対応しています.「undefined」、「number」、「string」、「bollan」、「function」.
    4.NaNは何ですか?何か特別なところがありますか?
    NaNは、Not a Numberという意味で、つまり数値ではなく、本来返すべき数値の操作数が数値に戻らない場合を表している特殊な数値です.
    特殊な点:
  • NaNに関する任意の動作(例えばNaN+10)はNaN
  • に戻る.
  • NaNおよびいかなる値も等しくない.NaN自体(例えばNaN==NaN/false)
  • を含む.
    5.非数値をどのように数値に変換しますか?
    非数値を数値に変換できる3つの関数があります.
    1. Number()
    2. parseInt()
    3. parseFloat()
    
    Number()
  • Number()は任意のデータタイプに使用できます.ブール値true=>1、false=>0.数字は簡単に入力されます.null=>0、undefined=>NaN、
  • 文字列
  • 文字列は、数字(10進数、8進数、16進数)のみを含み、10進数に変換されます.
  • 文字列は有効な浮動小数点フォーマットを含み、対応する浮動小数点値に変換される.
  • 文字列は空です.スペース記号も含めて、全部0に変換されます.
  • 文字列が上記のフォーマット以外の文字を含む場合、それをNaNに変換するということは、パーrseInt()とパーrseFloat()がさらに文字列をより合理的に変換する必要があることを意味する.
  • オブジェクトであれば、オブジェクトのvalueOf()方法を呼び出し、前の規則に従って値を変換します.変換結果がNaNであれば、オブジェクトのtoString()方法を呼び出し続け、再び規則的に文字列値を変換します.
  • parseInt()とパーパーパーパーファースト()
  • は文字列をデジタル変換します.前者は整数形式で、後者は整数を含む浮動小数点フォーマットの数値を解析します.
  • ParseInt()は、変換時の基数として第二のパラメータを指定し、どのぐらいの進数で変換するかを指定します.例えば、parseInt(111,2)は結果が7で、もしparseInt(111)を指定しないならば、デフォルトでは10進数で解析変換されますが、結果は111です.バイナリを指定する以外に他の進数も指定できます.したがって、多くの場合、我々が解析するべきのは10進数の数値です.したがって、10を指定して、誤った解析を避けるようにしてください.
  • 同じ点
  • 文字列の前の空白文字を無視して、最初の空白文字
  • を見つけます.
  • もし最初の文字が-または数字でないならNaN
  • に戻ります.
  • から8進数としてスタートします.0 xから16進数としてカウントされます.
  • は、非数値モードまで解析を継続すると
  • になる.
  • 空の文字列(スペースを含む文字列)であれば、NaN
  • に戻ります.
    6.==と==の違いは何ですか?
    まず、両者は比較演算子です.二つの値を比較してブール値に戻り、trueまたはfalseで比較条件を満たすかどうかを表します.しかし、=は等しいことを表します.==は厳密に等しいことを表します.
    5 == '5' 
    
    同じ比較演算子を使うと、string'5'が自動的にnumber 5に変換され、比較条件が満たされます.
    しかし、
    5 === '5' 
    
    厳密に等しい比較演算子を使用すると、自動的に変換処理が行われません.明らかにnumber 5は、string'5'と同じではありません.したがって、bollanのfalse値に戻ります.
    7.breakとcontinueの違いは何ですか?
    breakは循環体を強制的に終了させ、循環後の文を実行します.例えば、
    for( var i = 1; i < 5; i++ ){
      if( i === 3 ){
        break;
      }
      console.log(i);
    }
    //     1 2
    // break           ,            1  2      
    
    for( var i = 1; i < 5; i++ ){
      if( i === 3 ){
        continue;
      }
      console.log(i);
    }
    //     1 2 4
    // continue         ,      
    //   i === 3   ,       ,     i,        i++,       i < 5    
    
    8.void 0とundefinedの使用シーンにはどのような違いがありますか?
    まず例を見ます.
    function fn() {
      var undefined = 3;
      var a;
      if(a === undefined ){
        console.log('===') 
      }else{
        console.log('!==')
      }
    }
    fn()
    
    上のコードでは、aは変数を宣言していますが、割り当てられていませんので、undefinedは定義されていません.次の条件判定文では、aはundefinedに厳密に等しいはずです.しかし、最初にundefinedに対して宣言し、3 Infinity、NaN、undefinedの3つの単語を割り当てます.この時、プログラムの結果は!==undefined、厳密はundefinedに等しくないです.undefinedは3なので、実際にはa=undefined、aもundefinedとは違います.
    しかし、aは明らかにundefinedです.定義されていません.これはbugです.どうすればいいですか?ですから、一番安全な方法はvoidオペレータです.void演算子の役割は式を実行してundefinedに戻ります.この特性によって、他の不変です.if判断条件を修正してください.
    function fn() {
      var undefined = 3;
      var a;
      if(a === void 0 ){
        console.log('===') 
      }else{
        console.log('!==')
        console.log(a)
      }
    }
    fn()
    
    このとき、voidの優先度が比較演算子===より高いため、void 0はundefinedに脳が戻らないため、a==本当に純粋な天然無汚染のundefinedです.最後の判定結果はブール値trueです.出力=====
    9.以下のコードの出力結果は?なぜですか?
    console.log(1+1);   //  number 2
    console.log("2"+"4");  //  string "24"
    console.log(2+"4");  //  string "24"
    console.log(+"4");  //  number 4
    
    原因を説明します.
    まず、これらは演算子+異なるデータタイプで異なる意味を持つものです.
  • 最初はよく分かります.二つのパラメータは全部数字です.このときの+は加算です.
  • 両のパラメータはstringです.この時は文字列のつなぎ合わせが行われますので、新しいstring「24」につなぎます.
  • のパラメータはnumberですが、もう一つはstringです.numberをstringに変換して他のstringとつなぎ合わせます.結果はstring'24です.
  • の最後の一つは、一つの数字パラメータだけで正の整数に戻ります.numberです.直接numberに戻ります.stringですが、中はnumberです.numberです.consolie.log(ジレング)ならNaNに戻ります.本性は数値のタイプですが、文字列ジレングは、247956 numberの具体的な値に変換できません.
    10.以下のコードの出力結果は?
    var a = 1;  
    a+++a;  
    typeof a+2;
    
    結果は文字列「number 2」ですが、なぜこのようになったのですか?ここの+は実際には演算子の中の加算演算子ではなく、文字列のつづりを表しています.aはいずれにしてもnumberタイプです.typeofが返ってくるのはデータタイプがstring形式です.2行目のa+++aについては、実際には、(a+++)(+a)は、a=1 b=a=a+1 b+aと解釈されることができる.
    11.以下のコードの出力結果は?なぜですか?
     var a = 1;
     var b = 3;
     console.log( a+++b ); //     4
    
    結果は4です.まず++自己増加演算子の優先度が+加算演算子より高いです.a++は、現在の演算に参加した後(先に値を付けます)、さらに1を増加することを表します.したがって、1+3=4の場合、consolie.log(a)は2を返します.
    12.行列を巡回し、各項目の平方を印刷します.
    var arr = [3, 4, 5]
    for(i = 0; i
    行列を逆順に巡回して印刷します.
     var arr = [100, 90, 80, 70, 60]
     for(var i = arr.length - 1; i >= 0; i-- ){
       console.log(arr[i])
     }
    //     60 70 80 90 100
    
    偶数順の配列を巡回
    var arr = [100, 90, 80, 70, 60, 50, 40]
    for(var i = 1; i < arr.length; i += 2){
      console.log(arr[i])
    }
    //     90 70 50
    
    13.JSONを遍歴し、中の値を印刷する
    var obj = {
     name: 'hunger', 
     sex: 'male', 
     age: 28 
    }
    for( var key in obj ){
      console.log(obj[key])
    }
    //     hunger male 28
    
    14.以下のコード出力結果は?なぜ(テーマを選択)
    var a = 1, b = 2, c = 3; 
    var val = typeof a + b || c >0
    console.log(val) 
    //    number2
    
    typeofは一番優先度が高く、aはnumberであると判断し、続いて2とつづり合わせてnumber 2となります.|𞓜や演算子ですので、左側が成立し、右側が無視されて実行されません.そのため最後にnumberをvalに割り当て、consolie.loglを通過した時には、「」を削除します.
    var d = 5;
    var data = d ==5 && console.log('bb')
    console.log(data)
    //    bb undefined
    
    まずconsolie.log出力bbを実行して、d==5はtrueであり、その後&&右のconsone.logs('bb')は自動的にブール値に変換できなくなり、trueでもfalseでもなくundefinedであるため、undefinedをdataに割り当てた.
    var data2 = d = 0 || console.log('haha')
    console.log(data2)
    //    haha  defined
    
    まずconsolie.logsなので、まず脳出力hahaがないです.これは演算子です.左の0はfalseに変換されます.右のconsolie.logs('hahahahahaha')は有効にブール値bollanに変換されません.undefinedは定義されていません.最後にundefinedをdata 2に与えます.方法は自動的に改行されます.
    var x = !!"Hello" + (!"world", !!"from here!!");
    console.log(x)
    //    2
    
    理由は簡単です.まず括弧優先度が一番高いです.次の中にコンマ演算子があります.コンマ演算子が低いのはいらないですが、コンマの前のものを無視してもいいです.「world」はコンマの後の表現です.「from here!」本来は無辜の文字列ですが、ブール演算子の中のものを使っています.反則演算子を取って、こっそりブール値に変換されました.文字列が空ではないので、trueです.2回行って反を取りました.最後はtrueです.また見てください.「ハロー」同じように、ブーメラン値trueに変換すると、加算演算子+があります.そこで、ブール値は密かにnumberに変換されて加算に参加します.trueは1に対応しています.だから、大声で教えてくれます.x=1+1は、xはいくらですか?