21日目-2022.03.21


今日の勉強の内容


(モダンJavaScriptチュートリアル復習)

JavaScript、オブジェクトのデフォルト


混同または再注意が必要な内容

  • 矢印関数をカッコで使用する場合は、戻り値をreturnとして指定する必要があります.

  • 関数では、外部変数にアクセスおよび変更できます.
  • let userName = 'John';
    
    function showMessage() {
      userName = "Bob"; // (1) 외부 변수를 수정함
    
      let message = 'Hello, ' + userName;
      alert(message);
    }
    
    alert( userName ); // 함수 호출 전이므로 John 이 출력됨
    showMessage();
    alert( userName ); // 함수에 의해 Bob 으로 값이 바뀜
  • constと宣言されたオブジェクト
  • を変更することもできます.
    const me = {
      age : 30
    };
    
    me.age = "20";
    
    alert(me.age);
    constはmeの値を固定しますが、オブジェクトの内容は固定しません.
  • 四角カッコ表現を使用すると、文字列とすべての式の計算結果をpropertyキーとして使用できます.
    let user = {
      name: "John",
      age: 30
    };
    
    let key = prompt("사용자의 어떤 정보를 얻고 싶으신가요?", "name");
    alert( user[key] ); // John (name 입력시)
    						30  (age  입력시)
    
    
    let key = "name";
    alert( user.key ) // undefined      점 표기법의 경우 이런 방식 불가능
    

  • 変数名では保持語は使用できませんが、オブジェクトpropertyには制約がありません.

  • 次の2つの例の動作は同じです.
  • 1. 
    let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");
    
    let bag = {
      [fruit]: 5, 
    };
    alert( bag.apple );
    
    
    2.
    let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");
    let bag = {};
    
    bag[fruit] = 5;

  • Propertyのキーと値の名前が同じであれば、短縮できます.
    ex) name : name -> name,

  • キー値が文字型または構成部品型でない場合、キー値は自動的に文字列に変換されます.

  • 演算子inを使用して存在するかどうかを決定する場合は、in左側にproperty名が必要です.引用符で囲まれた文字列.

  • for..in繰り返し文はオブジェクトのすべてのキーを巡回することを許可する

  • let a = {};
    let b = {}; // 독립된 두 객체
    
    alert( a == b ); // false

  • オブジェクトが割り当てられた変数をコピーすると、オブジェクトの参照値はコピーされ、オブジェクトはコピーされません.

  • オブジェクト自体をコピーするには、「Object」を選択します.assign(挿入するオブジェクト、コピーするオブジェクト)

  • ゴミ収集器到着不可能なオブジェクトの削除

  • 接続されたオブジェクトが届かない場合があります
  • (Core JavaScriptベース)

    <実行コンテキスト>


  • 環境(環境記録)
    現在のコンテキストに関連するコードの識別子情報(パラメータ名、関数宣言、変数名など)を格納

  • がんばって
    コードを実行する前の変数宣言、関数宣言は、スキャンの最上位にドラッグするのではなく、昇格したようです.
    자바스크립트의 모든 선언에 호이스팅이 일어난다.

  • コードが実行される前にjavascriptエンジンは、コードに属しているすべての変数名を知っています.

  • 関数宣言
    関数定義子のみ存在/個別の割当てコマンドなし/関数名を定義する必要がある

  • 関数式
    定義された関数は、個々の変数として値の割当て/関数名を必要としません.
    (記名関数式の場合、外部から関数名で関数を呼び出すことはできません.)
    Var a = function b() {}     
     a(); 가능  ///  b(); 에러 발생   함수명은 함수 내부에서만 접근가능 

  • 関数宣言は全体的にハイライトされ、関数式には変数宣言子のみがハイライトされます.

  • Ex)例えば、業務間の大型JavaScriptファイルにおいて、同じ名称のA関数を関数宣言としてそれぞれ関数宣言として宣言する場合、以下の関数としてすべて適用され、問題/
    両方の関数が関数式の場合、2番目の関数の前に1番目の関数、2番目の関数の後に2番目の再関数があります.
    対照的に、ビジネス間関数式はより安全です.

  • グローバル変数
    特定の地域以外で宣言された変数/地域を考慮せずに、任意の場所で有効です.
    コードがすべて終了するまで、コードが開始されるとすぐにメモリが作成されます.

  • ゾーン変数
    かっこ{}内では、関数内で宣言された変数/宣言された領域内で有効/宣言された瞬間のみメモリが作成され、領域を超えた場合はメモリが破棄されます.

  • 上記の例では、関数式を使用するよりも領域変数を使用する方が安全です.
    A関数を領域変数として宣言するために外部にB関数を作成した場合、A関数はB内でのみ呼び出されます.
  • 課題

  • 関数式を使用して矢印関数
  • に変換
    ask(
      "동의?",
      function() { alert("동의"); },
      function() { alert("취소"); }
    );
    
    -> 
    ask(
    	"동의?",
        () =>alert("동의");,
        () =>alert("취소");
        );

  • alert( alert(1) || 2 || alert(3) );   // 1,2
    alert(1)の計算後に1を出力し、alertメソッドは未定義を返し、次の被演算子2に移動します.trutty値であるため、実行を停止し、2を返します.

  • alert( alert(1) && alert(2) );   // 1, undefined
    alert(1)の評価後出力1,alertメソッドは未定義を返すため実行停止,未定義戻り
    プロンプト・ウィンドウで
  • 100より大きい数値を入力でき、条件に合わない値を入力できる場合は、同じプロンプト・ウィンドウを繰り返し文で開きます.
    ユーザーが100を超える数値を入力したり、「キャンセル」ボタンを押したり、何も入力せずに「OK」ボタンをクリックした場合は、プロンプトウィンドウを開く必要はありません.
  • (ユーザが数字のみを入力すると仮定)
    let num;
    
    do {
    num = prompt("100보다 큰 숫자 입력", "");
    } while (num <= 100 && num );
    numがnullまたは空の文字列の場合、numは偽であるため、重複文は終了します.
  • 2からnまでの数字を書くと少数のコードしか出力されません.
    (記述コードは任意の数字nに対して機能しなければならない)
  • prime :
    for(let i=2; i <= n; i++) {
    	for(let x=2; x<i; x++) {
     	   if(i % x ==0) continue prime;
    	}    
        alert(i);
    }
    n以下の数、ある場合は小数、ない場合は小数
    関数isEmpty(obj)を作成し、オブジェクトにPropertyがない場合はtrue、そうでない場合はfalseを返します.
    function isEmpty(obj) {
      for (let key in obj) {
        return false;
      }
      return true;
    }
  • のすべてのメンバーの給与の合計を求め、コードを記述してその値を変数とに格納します.(給与が空の場合はsumに0を格納する必要があります)
  • let salaries = {
      John: 100,
      Ann: 160,
      Pete: 130
    }
    
    let sum = 0;
    for (let key in salaries) {
    	sum += salaries[key];
    }
  • オブジェクトのプロパティ値の2倍の関数倍数(obj)
  • を作成します.
    function multiple(obj) {
    	for (let key in obj) {
    	if(typeof(obj[key]) == 'number') {
     		obj[key] * 2;   
    }    
    }
    }
  • パラメータの年齢が18より大きい場合はtrueを返します.そうでない場合、結果を返す関数はif文ではなく、or演算子を使用して次の関数と同じ関数を取得します.
  • function checkAge(age) {
      if (age > 18) {
        return true;
      } else {
        return confirm('보호자의 동의를 받으셨나요?');
      }
    }
    정답) 
    function checkAge(age) {
      return (age > 18) || confirm('보호자의 동의를 받으셨나요?');
    }

    学習ソース


    JavaScript。info
    コアJavaScript-鄭在南知音-
    上の内容は勉强の中で私が理解した内容で、いくつか间违った内容があるかもしれません.
    灰毒中発見時の修正