operator, loop

sudyn·2023년 3월 14일

JavaScript

목록 보기
7/14
// 1.String concatenation
console.log('my' + ' cat'); // my cat
console.log('1' + 2); // 12 숫자가 문자열로 변환되어 출력된다.
console.log(`string literals: 1 + 2 = ${1 + 2}`); // string literals: 1+ 2 = 3

// 2. Numberic operators
console.log(1 + 1); //add
console.log(1 - 1); //subtract
console.log(1 / 1); //divide
console.log(1 * 1); //multiply
console.log(5 % 2); //remainder (나머지) // 1
console.log(2 ** 3); //exponentiation (거듭제곱) 8

// 3. Increment and decrement operators(증가/감소 연산)
let counter = 2;
const preIncrement = ++counter;
// counter = counter + 1;   // counter의 값을 1 증가한 후에
// preIncrement = counter; // preIncrement 변수에 counter값 할당
console.log(`preIncrement: ${preIncrement}, counter : ${counter}`); // 3,3

const postIncrement = counter++;
// postIncrement = counter; // postIncrement 변수에 counter값 할당 후,
// couner = counter +1; // counter값에 1 증가
console.log(`postIncrement: ${postIncrement}, counter : ${counter}`);   //3,4

// 4. Assigment operators
let x = 3;
let y = 6;

x += y; // 9 (x = x + y;
x -= y; // 3 (x = x - y;)
x *= y; // 18 (x = x * y;)
x /= y; // 3 (x = x / y;)

// 5. Comparsion operators(비교 연산)
console.log(10 < 6); // false
console.log(10 <= 6); // false
console.log(10 > 6); // true
console.log(10 >= 6); // true

// 6. Logical operators : || (or), &&(and), !(not)
const value1 = false;
const value2 =  4 < 2;  // false

function check(){
        for (let i = 0; i < 10; i++) {
        //wasting time
        console.log('@');
    }
    return true;
}

// || (or) : finds the first truthy value
console.log(`or: ${value1 || value2 || check()}`);  // false, false,true -> true(하나라도 true이면

// && (and) : finds the first falsy value
console.log(`and: ${value1 && value2 && check()}`);  // false, false,true -> false

// !(not)
console.log(!value1); //true

// Note!
//  연산이 많고 복잡한 함수나, extension 같은걸 앞에 두게되면 계산하는데 시간이 지체됨
// 심플한 value 값을 제일 앞에 두고, 복잡한 함수 등은 제일 뒤에 두는게 좋다 (ex를들어 check()함수)

// Note!
// null check? 어떤 값이 null인지 undefined인지 체크하는 작업
// often used to compress long if-statement
// multableObject && nullableObject.something

function printIfNotNull(input) {
  if (input !== null && input !== undefined) {
    console.log(input);
  }
}
// 7.Equality (동등 비교 연산)
const stringFive = '5';
const numberFive = 5;

// == loose equlity, with type conversion (type 변환후 비교)
console.log(stringFive == numberFive);  // true
console.log(stringFive != numberFive);  // false

// === strict equality, no type conversion(type 다를경우 false 반환)
console.log(stringFive === numberFive); // false
console.log(stringFive !== numberFive); // true

//프로그래밍 중에 Equality로 검사할 일이 생기면 === 사용하는걸 권장 (null check 제외)

// object equa;oty by reference
const sujin1 = { name: 'sujin' };
const sujin2 = { name: 'sujin' };
const sujin3 = sujin1;

console.log(sujin1 == sujin2);   // false(reference 다름)
console.log(sujin1 === sujin2); // false (reference 다름)
console.log(sujin1 === sujin3); // true

// equlity- puzzler
console.log(0 == false); //true
console.log(0 === false); //false(boolean type 아님)
console.log('' == false); //true  
console.log('' == false); //false
console.log(null == undefined); //true
console.log(null === undefined); //false( type 다름)

// 8. Conditional operators: iif
// if, else if, else
const name = 'df';
if (name === 'sujin') {
    console.log('Welcome, Sujin!');
}else if (name === 'coder') {
    console.log('You are amazing coder');
} else {
	console.log("unkwnon");}


// 9.Ternary operator (삼항 연산자)
// condition ? value1 : value2; (true,false)
console.log(name === 'sujin' ? 'yes' : 'no');

// 10. Switch statement
// use for multiple if checks
// use for enum-like value check
// use for multiple type checks in TS
// else if를 반복하게 된다면 switch (enum,type 검사시 사용)
const broswer = 'IE';
switch (broswer) {
    case 'IE' :
        console.log('go away!');
        break;
    case "Chrome" : 
	case "Firefox" :
		console.log("I love you!");
		break;
    default :
        console.log('same all!');
        break;
}

// while 무한대로 돔
// 11. Loops
// while loop, while the condition is truthy,
// body code is executed
let i =3;
while (i > 0) {
    console.log(`while: ${i}`);
    i--;
}

// do while loop, body code is executed first, (블럭 실행후, 조건 검사 출력후 i가 0인지 검사)
// then check the condition.
do {
    console.log(`do while: ${i}`);
    i--;
} while (i > 0);

// for loop, for(begin; condition; step)
for (i = 3; i > 0; i--) {
	console.log(`for: ${i}`);
}

// inline variable declaration
for (let i = 3; i > 0; i = i - 2) { 
	console.log(`inline variable for: ${i}`);
}

// nested loops
for (let i = 0; i < 10; i++) { 
    for (let j = 0; j < 10; j++) {
        console.log(`i: ${i}, j:${j}`);
    }
}

// Q1. iterate from 0 to 10 and print only even numbers(use continue)
for( let i = 0; i < 11; i++) {
    if(i % 2 !==0){
        continue;
    }
    console.log(`q1. ${i}`);
}

// Q2. iterate from 0 to 10 and print numbers unit reaching 8 (use break)
for(let i = 0; i < 11; i++) {
    if(i > 8){
        break;
    }
    console.log(`q2. ${i}`);
}
profile
개발계발하는 프론트엔드 개발자🍠

0개의 댓글