Operatorのクリーンアップ
38776 ワード
1) String concatenation
*DreamCodingの資料を以下に示します.
console.log("my" + " cat"); // my cat
console.log("1" + 2); // 12 (string)
console.log(`template literals: 1 + 2 = ${1 + 2}`);
// template literals: 1 + 2 = 3
// 공백이나 특수문자도 그대로 표시 가능
console.log("ellie's book");
// 특수기호는 앞에 backslash 사용
- template literals
複数行の文字列と文字補間機能を使用して、式をネストできる文字列テキスト.
例)
let a = 5;
let b = 10;
console.log("Fifteen is " + (a + b) + " and\nnot " + (2 * a + b) + ".");
// "Fifteen is 15 and
// not 20."
templateテキストを使用すると、構文糖を使用して読みやすくすることができます.var a = 5;
var b = 10;
console.log(`Fifteen is ${a + b} and
not ${2 * a + b}.`);
// "Fifteen is 15 and
// not 20."
2) Numeric operators
console.log(1 + 1); // add
console.log(1 - 1); // substract
console.log(1 / 1); // divide
console.log(1 * 1); // multiply
console.log(1 % 1); // remainder
console.log(1 ** 1); // exponentiation
3) Increment and Decrement operators
let counter = 2;
const preIncrement = ++counter;
// counter = counter + 1;
// preIncrement = counter;
console.log(`preIncrement: ${preIncrement}, counter: ${counter}`);
// preIncrement: 3, counter: 3
const postIncrement = counter++;
// postIncrement = counter;
// counter = counter + 1;
console.log(`postIncrement: ${postIncrement}, counter: ${counter}`);
// postIncrement: 3, counter: 4
4) Assignment operators
let x = 3;
let y = 6;
x += y; // x=x+y; → x=3+6 → x=9
x -= y; // x=x-y;
x *= y; // x=x*y;
x /= y; // x=x/y;
5) Comparison operators
console.log(10 < 6); // less than
console.log(10 <= 6); // less than or equal
console.log(10 > 6); // greater than
console.log(10 >= 6); // greater than or equal
// 결과는 boolean임 (t/f)
6) Logical operators
// 3가지: ||(or), && (and), !(not)
const value1 = true;
const value2 = 4 < 2;
//||(or), finds the first truthy value🌟
console.log(`or: ${value1 || value2 || check()}`);
//연산이 heavy한 함수를 호출하거나 expression은 효율성을 위해 제일 뒤에 와야함
//&&(and), finds the first falsy value🌟
console.log(`and: ${value1 && value2 && check()}`);
//often used to compress long if-statement
/*🌟nullableObject && nullableObject.something;
- and는 null체크할때도 많이 쓰인다.
- null일 수도 있는 값을 체크 없이 실행시키면 프로그램이 다운되므로, 이를 방지하기 위해 nullableObject가 null이면 false가 되도록 하여 뒤의 실행을 막는다.
- 즉,object가 null이 아니여야 object의 something이라는 value를 받아오게 된다.*/
if (nullableObject != null) {
nullableObject.something;
}
// 위 코드는 nullableObject && nullableObject.something과 같다.
function check() {
for (let i = 0; i < 10; i++) {
//wasting time
console.log("💕");
}
return true;
}
//! (not)
console.log(!value1);
7) Equality
const stringFive = "5";
const numberFive = 5;
// ==loose equality, with type conversion
console.log(stringFive == numberFive); //true
console.log(stringFive != numberFive); //flase
// ===strict equality, no type conversion → ❗ loose equality보다 이것을 사용하는 게 더 좋다.
console.log(stringFive === numberFive); //false
console.log(stringFive !== numberFive); //true
// object equality by reference
const ellie1 = { name: "ellie" };
const ellie2 = { name: "ellie" };
const ellie3 = ellie1;
console.log(ellie1 == ellie2);//false → 각각 다른 ref가 저장되어 있기 때문
console.log(ellie1 === ellie2); //false → 똑같은 타입이든 아니든 ref값이 다르기 때문
console.log(ellie1 === ellie3); //true → 똑같은 ref 가지고 있음
// equality Quiz💥
console.log(0 == false); //true
console.log(0 === false); //false
console.log("" == false); //true
console.log("" === false); //false
console.log(null == undefined); //true!!!!
console.log(null === undefined); //false
8) Conditional operators: if
// if, else if, else
const name = "merry";
if (name === "merry") {
console.log("Welcome, Merry!"); // Welcome, Merry!
} else if (name === "coder") {
console.log("You are amazding coder");
} else {
console.log("unknown");
}
9) Conditional (ternary) operator: ?
/* condition ? value1: value2;
→ condition이 true이면 value1을, false면 value2를 return함 */
const name = "merry";
console.log(name === "merry" ? "yes" : "no"); // yes
//💥복잡하게 중첩시키지 말고 그럴 땐 if나 switch문을 쓰자
10) Switch statement
//use for multiple if checks : if문 너무 반복할 때 사용
//use for enum-like value check, use for multiple type checks in TS
const browser = "IE";
switch (browser) {
case "IE":
console.log("go away!");
break;
case "Chrome":
case "Firefox":
// 다른 case지만 같은 코드를 실행하면 이렇게 case를 연달아 쓰면 묶어서 표현 가능
console.log("love you!");
break;
default:
// 보통 default까지 오면 안되기 때문에 throw Error('unknown type')와 같이 에러를 호출시킨다.
console.log("same all!");
break;
}
11) Loops
1. while loop
: while the condition is truthy, body code is executed.
let i = 3;
while (i > 0) {
console.log(`while: ${i}`);
i--;
}
/* [console]
while: 3
while: 2
while: 1
*/
2. do while loop
: body code is executed first, then check the condition.
let i = 0;
do {
console.log(`do while: ${i}`);
i--;
} while (i > 0);
/* [console]
do while: 0
*/
3. for loop
: for ( begin ; condition ; step )
-既存の変数に割り当てられている場合:
for (i = 3; i > 0; i--) {
console.log(`for: ${i}`);
}
/* [console]
for: 3
for: 2
for: 1
*/
-変数が既存に存在しない場合
inline variable declaration
:letという領域変数をブロックに宣言します.
for (let i = 3; i > 0; i = i - 2) {
console.log(`inline variable for: ${i}`);
}
/* [console]
inline variable for: 3
inline variable for: 1
*/
-ネストループ→CPUに悪いので、なるべく避けましょう!
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
console.log(`i: ${i}, j: ${j}`);
}
}
/* [console]
i: 0, j: 0
i: 0, j: 1
...
i: 9, j: 9
*/
-break、continue→loopで使用
break
:現在のループを終了し、次の文に移動してプログラム制御します.
問題)0から10の反復から8(use break)に達するまで
i = 0;
while (i <= 10) {
console.log(i);
if (i === 8) {
break;
}
i += 1;
}
continue
:ラベルがループの現在のループで文の実行を終了し、繰り返し文の最初のループを返し、ループの次のコードを実行します.
break文とは異なり、continueはループの実行を完全に終了するのではなく、次の操作を実行します.
問題)0から10までの反復と偶数のみの印刷(continueを使用)
for (let i = 0; i <= 10; i++) {
if (i % 2 === 0) {
console.log(i);
} else {
continue;
}
}
参考資料https://www.youtube.com/channel/UC_4u-bXaba7yrRz_6x6kb_w
Reference
この問題について(Operatorのクリーンアップ), 我々は、より多くの情報をここで見つけました https://velog.io/@wiostz98kr/TIL10-l-JavaScript-Operatorテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol