TIL019_210411
5161 ワード
🍊 感傷的
📙 ホット品脱コード時間3時間
👍🏼 元気回復に努める
👎🏼 精神管理の失敗
🚀 n/a.ターゲット
📣 DREAMコードJavaScript基礎課:5-6
注記リンク:DREAMエンコーディング
5. function
javascript function
JAvascriptにはクラスが追加されていますが、javaのように純粋なobjcet向けのlaguageではありません
原型に基づいた偽のオブジェクト向け言語です
したがってJavaScriptもプログラム言語(プロセス言語)の一つである.
functionはsub-programとも呼ばれます
functionはinput(parameter)を受け入れて出力に戻る
function declaration
function name(param1, param2) { body...return; }
one function === one thing
naming: doSomething, command, verb
e.g. createCardAndPoint -> createCard, createPoint
function is object in JS
JavaScript関数では、タイプが不明です
->数字も文字出力に変換
->typescriptを使用してこれらの問題を解決する
// in javascript
"use strict";
function log(message) {
console.log(message);
return 0;
}
// in typescript - 협업을 쉽게 하고 api 형태로 제공할 때 유용
function log(message: string): number {
console.log(message);
return 0;
}
parameters
primitive parameter: passed by value
関数に渡される各パラメータのprimitive typeには、メモリに保存されているため、値が渡されます.
object parameters : passed by reference
objecttypeはreferenceがメモリに格納されているためreferenceが渡される
default parmaters (added in ES6)
function showMessage(message, from='unknown') {
console.log(`${message}, ${from}`);
}
rest parameters (added in ES6)... -> restパラメータ、配列形式で渡す
function printAll(...args) {
for (let i = 0; i <args.length; i++) {
console.log(args[i]);
}
for (const arg of args) {
console.log(arg);
} //이런 식으로 간단하게 출력할 수 있다
args.forEach(arg) => console.log(arg));
}
printAll('dream','coding','ellie');
関数はobjectの一種です関数宣言後の関数名->関数をオブジェクトに変換するため、関数(オブジェクト)のプロパティ値を決定できます.
local scope
block scope, global scope
closer,語彙環境は以下の概念から派生したものである.
「外では中が見えず、中からしか外が見えない」(着色したガラス窓)
ブロック内で変数を宣言する場合は、ゾーン変数->内でのみアクセスできます.
ブロック外ではブロック内に近づくことはできませんが、ブロック内ではブロック外の変数に近づくことができます.
return
returnタイプの関数return undefinedがありません.に等しい
early return, early exit
ブロックで論理を記述する可読性は劣る(e.g.if,else)
したがって、条件が一致しない場合、returnを使用して関数をすばやく終了できます.
必要なすべての論理を実行できるようにコードを記述します.
//bad
function upgradeUser(user) {
if (user.point > 10) {
//long upgrade logic
}
}
//good
function upgradeUser(user) {
if (user.point <= 10) {
return;
}
//long upgrade logic
}
function expression
first-class function
function are treated like any other variable
can be assigned as a value to variable
can be passed as an argument to other functions
can be returned by another function
function expression
a function declaration can be called earlier than it tis defined. (hoisted)
a function expression is created when the execution reaches it.
anonymous function vs named function
const print = function () {
console.log('print');
};
const print = function print() {
console.log('print');
};
print();
const printAgain = print;
printAgain();
const sumAgain = sum;
console.log(sumAgain(1,3));
関数を宣言しながら変数にすぐに割り当てることができます.named function is better debugging in debugger's stack traces
再帰:関数内で関数が自分で呼び出されます->プログラムが死亡します(フィボナッチまたは重複する平均値を計算する場合のみ)->続行します.callスタックは満たされます.
callback function using function expression
function randomeQuiz(answer, printYes, printNo) {
if (answer === 'love you') {
printYes();
} else {
printNo();
}
}
arrow function
always anonymous
const simplePrint = () => console.log('simplePrint');
const add = (a,b) => a+ b;
// 블럭 넣어서 처리할 수도 있다 (return 써야 함)
const add = (a,b) => {
return a+ b;
};
IIFE
immediately invoked function expression
//함수 호출 기존 방식
function hello() {
console.log('IIFE');
}
hello();
//IIFE 방식 - 선언과 동시에 호출할 수 있다
(function hello() {
console.log('IIFE');
})();
Quiz
function calculate(command, a, b)
command: add, substract, divide, multiply, remainder
calculate(add,2,3)
6.クラスオブジェクト向け言語
class vs object
object-oriendted
class person{
name; //property - 속성(field)
speak(); //function - 행동(method)
}
propertyある値が別の値に関連付けられている場合
文字列.lengthのlengthはpropertyと呼ばれます.
Reference
この問題について(TIL019_210411), 我々は、より多くの情報をここで見つけました https://velog.io/@keepcalm/TIL019210410テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol