TIL023_210415
12839 ワード
🍊 感傷的
📙 ホット品脱コード時間9時間
👍🏼 -
👎🏼 -
🚀 n/a.ターゲット
📣 JavaScript基礎レッスン:14-23
async & await
Homework
//그럼 이 부분 어떻게 await 활용해서 쓸 수 있을까?
const userStorage = new UserStorage();
const id = prompt('enter your id');
const password = prompt('enter your passrod');
userStorage
.loginUser(id,password)
.then(userStorage.getRoles)
.then(user => alert(`Hello ${user.name}, you have a ${user.role} role`);
.catch(console.log);
javascript function
関数の宣言と呼び出し
値を渡すパラメータ定義部+関数で実行するコード記述部
function doSomething() {
console.log('hello');; //선언만 한 것
}
doSomething(); //호출
関数の2種類
戻り値の関数
計算後に特定の値を渡し、
//함수 선언
function add(a,b) {
const sum = a+ b;
return sum;
}
//a와 b라는 특정한 인자값을 받아와서 const sum이라는 변수에 a,b 저장
//a,b 값 더한뒤 sum이라는 변수에 할당
//a,b에 값 전달해서 a,b라는 이름으로 각각의 값에 접근할 수 있다
//코드블록 수행 뒤 return이라는 키워드 이용해서 계산한 값 전달
//함수 호출
const result = add(1,2); //정의함과 동시에 값 할당, 함수를 호출한 것
console.log(result);
パラメータとして関数を渡す
function doSomething(add) {
console.log(add);; //선언만 한 것
}
doSomething(add); //함수 호출하면서 인자로 함수 자체를 전달 //f add(a,b) {...}
doSomething(add()); //이렇게 하면 함수가 바로 실행돼버린다 //sum
//add 호출된 뒤에 나온 마지막으로 전달된 값이 전달됨, 따라서 함수를 전달하는 것이 아님
//함수 선언
function add(a,b) {
const sum = a+ b;
return sum;
}
function doSomething(add) {
console.log(add);;
const result = add(2,3);
console.log(result);
}
//함수 호출
doSomething(add);
変数への関数の割当て
const addFun = add;
console.log(add);
addFun(1,2);
JavaScript変数
元のタイプとオブジェクト
へんすう
処理するデータを読み込むのに役立ちます.データを含める
変数によるデータへのアクセスと更新が可能
収容可能な最小単位データを元のデータ型と呼ぶ
変数を論理に関連付けられた有意義な名前に名前を付ける
number, string, boolean, null, undefined, symbol
let number = 2; //숫자가 변수에 할당
let number2 = number;
//number라는 데이터에 들어있는 2를 그대로 복사해서 할당한다
number2 = 3; //3을 업데이트, number에는 영향을 주지 않는다
メモリ領域のnumber変数に2の値、デジタルデータをロード変数を宣言すると、メモリには変数のためのスペースがあります->メモリにはバイトサイズのスペースがあります
object
元のタイプを除いて、すべてのオブジェクトはobjectです.
≪オブジェクト|Objects|oem_src≫:1つ以上のデータを1つの場所に集約
(e.g.配列、関数など)
let obj = {
name: 'eillie',
age: 5
};
let obj2 = obj
console.log(obj2.name);
obj.name = 'james';
//obj2의 값도 바뀐다
オブジェクトのキーもメモリに割り当てられます変数を割り当てると、中の値がコピーされます.
元のタイプは、データ自体が変数に含まれているため、データ自体がコピーされます.
オブジェクトはアドレス入力のみをコピー
元のタイプはメモリに直接割り当てることができます
letは値を変更でき、constは値を変更できません
しかし、なぜオブジェクトがconstなのか、なぜ変更されたのか.
割り当てられたオブジェクトの参照値はロックされており、変更できません.
ただしobjが指す名前は変更できます.
referenceが指す内容を変更できます
JavaScript関数
繰り返し実行するロジックを書き込む場合
コードブロックに関数のadd名が指定されています.kewordでJavaScriptエンジンに通知します.これは関数です.
関数名を簡潔明瞭に書き込む
JavaScriptにはタイプがありません
function add(a,b) {
return a+b;
}
function surprise(operator) {
const result = operator(2,3); //add(2,3)
console.log(result);
}
surprise(add);
受信したパラメータの名前により,ブロック内から近づくことができる.どのようなデータがあるかはわかりませんが、データ名でアクセスできます.
関数の作成時にデータは含まれません
呼び出し関数実際にデータを渡す
関数には、オブジェクト内の関数の参照データも含まれます.
関数を変数に割り当てると、変数に関数の参照が割り当てられます.
関数の名前が関数定義の場所を指し、関数の名前を他の変数に割り当てると、関数が指すアドレスが変数に割り当てられ、最終的に同じ関数を指し、同じ関数を実行します.
パラメータを受け入れない関数は入力を受け入れません
パラメータも意味のある名前で、私たちが定義した子供です.
パラメータを関数に渡すと、関数が指すパラメータに等しい
演算子
trueの場合は実行し、falseの場合は実行しません.
false:0、-0、「」、null、undefined(空)
true: -1, 'false', []
配列はオブジェクトなのでtrue
let num;
num && console.log(num); //false이므로 실행되지 않음
let num2 =9;
num2 && console.log(num2); //실행
let obj;
console.log(obj.name); //에러, 없는 것에 접근하면 프로그램 자체가 죽어버린다
obj && console.log(obj.name); //obj가 있다면 접근하라는 말, 따라서 실행 안 됨
カテゴリ
class Counter {
constructor() {
this.counter = 0;
}
increase() {
this.counter++;
}
counterというクラスにはcounterという変数があります.この変数は、クラスを使用してオブジェクトを作成した瞬間に0に初期化されます.クラスで関数を宣言する場合functionは含まれません
クラスは、さまざまなオブジェクトを作成するための青写真です.
再利用性を向上させ、レゴのように使用させる
JavaScriptコアの最新構文
(ES 6、ES 11)バーベルはインターネットExplorerでは実行できないため
JavaScriptライブラリ:返信、アンカー、ビュー
ES6
shorthand property names
鍵とValueの名前が同じ場合は、略語で記述できます.
const ellie1 = {
name: 'Ellie',
age: '18',
};
const name = 'Ellie';
const age = '18';
// 💩
const ellie2 = {
name: name,
age: age,
};
// ✨
const ellie3 = {
name,
age,
};
Destruncturing assignment オブジェクトキーとValueにアクセスするときは、カッコでキーの名前を定義し、キーとValueをそれぞれ名前とレベルに割り当てます.
const student = {
name: 'Anna',
level: 1,
};
// 💩
const name = student.name;
const level = student.level;
console.log(name, level);
// ✨
const { name, level } = student;
console.log(name, level);
const { name: studentName, level: studentLevel } = student;
console.log(studentName, studentLevel);
// array
const animals = ['🐶', '😽'];
// 💩
const first = animals[0];
const second = animals[1];
console.log(first, second);
// ✨
const [first, second] = animals;
console.log(first, second);
Spread syntaxこれはレプリケーション・アドレスの参照値です.値を変更すると元のアドレスに適用されます.
const obj1 = { key: 'key1' };
const obj2 = { key: 'key2' };
const array = [obj1, obj2];
// array copy
const arrayCopy = [...array];
console.log(array, arrayCopy);
const arrayCopy2 = [...array, { key: 'key3' }];
obj1.key = 'newKey';
console.log(array, arrayCopy, arrayCopy2);
// object copy
const obj3 = { ...obj1 };
console.log(obj3);
// array concatenation
const fruits1 = ['🍑', '🍓'];
const fruits2 = ['🍌', '🥝'];
const fruits = [...fruits1, ...fruits2];
console.log(fruits);
// object merge //동일한 key 면 값 덮어씌우므로 주의
const dog1 = { dog: '🐕' };
const dog2 = { dog: '🐶' };
const dog = { ...dog1, ...dog2 };
console.log(dog);
console.clear();
default parameters // 💩
function printMessage(message) {
if (message == null) {
message = 'default message';
}
console.log(message);
}
printMessage('hello');
printMessage();
// ✨
function printMessage(message = 'default message') {
console.log(message);
}
printMessage('hello');
printMessage();
ternary operator // 💩
let component;
if (isCat) {
component = '😸';
} else {
component = '🐶';
}
console.log(component);
// ✨
const component = isCat ? '😸' : '🐶';
console.log(component);
console.log(isCat ? '😸' : '🐶');
template literals const weather = '🌤';
const temparature = '16°C';
// 💩
console.log(
'Today weather is ' + weather + ' and temparature is ' + temparature + '.'
);
// ✨
console.log(`Today weather is ${weather} and temparature is ${temparature}.`);
ES11
optional chaining
const person1 = {
name: 'Ellie',
job: {
title: 'S/W Engineer',
manager: {
name: 'Bob',
},
},
};
const person2 = {
name: 'Bob',
};
// 💩💩💩💩💩💩
function printManager(person) {
console.log(person.job.manager.name);
}
printManager(person1);
// printManager(person2);
// 💩💩💩
function printManager(person) {
console.log(
person.job
? person.job.manager
? person.job.manager.name
: undefined
: undefined
);
}
printManager(person1);
printManager(person2);
// 💩
function printManager(person) {
console.log(person.job && person.job.manager && person.job.manager.name);
}
printManager(person1);
printManager(person2);
// ✨
function printManager(person) {
console.log(person.job?.manager?.name);
}
printManager(person1);
printManager(person2);
nullish coalescing operator const name = 'Ellie';
const userName = name || 'Guest';
console.log(userName);
const name = null;
const userName = name || 'Guest';
console.log(userName);
// 💩
const name = '';
const userName = name || 'Guest';
console.log(userName);
const num = 0;
const message = num || 'undefined';
console.log(message);
// ✨
const name = '';
const userName = name ?? 'Guest';
console.log(userName);
const num = 0;
const message = num ?? 'undefined';
console.log(message);
💡 チップ
T字学習法
学習が広く、専門知識管理+土壌上
フロントエンド
--奥行き
1.デフォルト:html、css、javascript
2.フレーム:タイプスクリプト、ビュー、リアクション
3.ユーザーの平滑寸法を減らすことを考える
4.レイヤーのロード、平坦化と転送、パフォーマンス分析、アニメーションの低減、光の移行
5.設計技能、バックエンド通信方法、バックエンドデータ受信と最適化サービス層
--幅
コンピュータ工学の基本知識(オペレーティングシステム、ネットワーク、コンポーネント、組み込み、数学(マトリクス、統計)
データ構造(配列、リスト、マッピングがデータを効率的に管理するためにいつ使用されるかの違い)
アルゴリズム(状況と与えられたデータ構造に基づいてどのアルゴリズムを使用すれば時間と空間を効果的に使用できるか)
クリーンコード、テストドライバコード、再構築、コードレビュー
学習方法
->まずはJavaScriptをマスター
📣 The Web Developer Bootcamp 2021: 27.0-
27. Async
27.1 Call stack
call stack = mechanism the JS interpreter uses to keep track of its place in a script that calls multiple functions
how js knows what function is currently being run and what function are called from within that function, etc like finger in a book
stack: basic data structure in computer science
When a script calls a function, the interpreter adds it to the call stack and then starts carrying out the function.
Any functions that are called by that function are added to the call stack further up, and run where their calls are reached.
When the current function is finished, the interpreter takes it off the stack and resumes execution where it left off in the last code listing.
コールスタックのサイトを表示
あるいはクロム開発ツールの出所を見てみればわかります.
🕹 Project
音楽DBサイトプロジェクトの起動
計画書の作成、実施する機能と画面計画.
Reference
この問題について(TIL023_210415), 我々は、より多くの情報をここで見つけました
https://velog.io/@keepcalm/TIL023210415
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(TIL023_210415), 我々は、より多くの情報をここで見つけました https://velog.io/@keepcalm/TIL023210415テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol