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 me = {
age : 30
};
me.age = "20";
alert(me.age);
constはmeの値を固定しますが、オブジェクトの内容は固定しません.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(挿入するオブジェクト、コピーするオブジェクト)
ゴミ収集器到着不可能なオブジェクトの削除
接続されたオブジェクトが届かない場合があります
<実行コンテキスト>
環境(環境記録)
現在のコンテキストに関連するコードの識別子情報(パラメータ名、関数宣言、変数名など)を格納
がんばって
コードを実行する前の変数宣言、関数宣言は、スキャンの最上位にドラッグするのではなく、昇格したようです.
자바스크립트의 모든 선언에 호이스팅이 일어난다.
コードが実行される前に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を超える数値を入力したり、「キャンセル」ボタンを押したり、何も入力せずに「OK」ボタンをクリックした場合は、プロンプトウィンドウを開く必要はありません.
let num;
do {
num = prompt("100보다 큰 숫자 입력", "");
} while (num <= 100 && num );
numがnullまたは空の文字列の場合、numは偽であるため、重複文は終了します.(記述コードは任意の数字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;
}
let salaries = {
John: 100,
Ann: 160,
Pete: 130
}
let sum = 0;
for (let key in salaries) {
sum += salaries[key];
}
function multiple(obj) {
for (let key in obj) {
if(typeof(obj[key]) == 'number') {
obj[key] * 2;
}
}
}
function checkAge(age) {
if (age > 18) {
return true;
} else {
return confirm('보호자의 동의를 받으셨나요?');
}
}
정답)
function checkAge(age) {
return (age > 18) || confirm('보호자의 동의를 받으셨나요?');
}
学習ソース
JavaScript。info
コアJavaScript-鄭在南知音-
上の内容は勉强の中で私が理解した内容で、いくつか间违った内容があるかもしれません.
灰毒中発見時の修正
Reference
この問題について(21日目-2022.03.21), 我々は、より多くの情報をここで見つけました https://velog.io/@abo7326/21일차-2022.03.21テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol