3. JS basic (operator, function)

Changmok LEE·2023년 1월 14일

1. operator

  • string concatenation

    console.log('my' + 'cat'); // my cat
    console.log('1' + 2); // 12
  • numeric operator

    console.log(2 ** 3); // exponentiation(제곱) == 8
  • equality (loose && strict)

    const string = '5'
    const num = 5;
    // loose equality, with type conversion 
    console.log(string == num); // true
    console.log(string != num); // false
    // strict equality, with  No type conversion 
    console.log(string === num); // false
    console.log(string !== num); // true
  • object equality by reference (loose && strict)

    const lee1 =  { name: 'lee' };
    const lee2 =  { name: 'lee' };
    const lee3 = lee1;
    console.log(lee1 == lee2); // false
    console.log(lee1 === lee2); // false
    console.log(lee1 === lee3); // true

    c 언어 pointer 개념과 같다
    (변수에 주소값을 저장)

  • 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

    strict equality 식을 사용하게 되면 type이 다르기 때문에 false

2. function

  • function is object in JS
  • fundamental building block in the program
  • subprogram can be used multiple times
  • performs a task or calculates a value
  • function declaration

    function log(str) {
    console.log(str);
    }
    log('hello');
    log(12);
    // type이 중요 할 경우 type script 사용
    function log(str: string): number {
    console.log(str);
    return 1;
    }
    
  • parameter

    premitive parameters: passed by value
    object parameters: passed by reference

    function changeName(obj) {
    obj.name = 'kim';
    }
    const obj = {name: 'lee'};
    // reference가 전달 됨
    changeName(obj);
    console.log(obj); // {name: "kim"}
  • default parameter

    added in ES6

    // default parameter 미적용
    function showMessage(message, from) {
    if (from === undefined) {
    	from = 'unknown';
    }
    console.log(`${message} by ${from}`); // Hi! by unknown
    }
    showMessage('hi');
    // default parameter 적용 (default 값 설정)
    function showMessage(message, from = 'unknown') {
      console.log(`${message} by ${from}`); // Hi! by unknown
    }
    showMessage('hi');
  • rest parameter

    added in ES6
    배열 형태로 파라메터 전달

    function printAll(...args) {
        // 기본 for문
    	for (let i = 0; i < args.length; i++) {
      	console.log(args[i]);
      }
    	// rest parameter
    	for (const i of args) {
      	console.log(i);
      }
      // rest parameter
    	args.forEach((i) => console.log(i));
    }
    showMessage('hi');
  • local scope

    {}scope 안에 선언 되어 있는 변수는 scope 밖에서 인식 X
    scope 안에서는 전역변수 확인 가능

    밖에서는 안이 보이지 않고
    안에서만 밖을 볼 수 있다.

    let grobalMessage = 'global' // global variable
    function printMessage() {
    	let message = 'hi';
    	console.log(message); //local variable
    	console.log(grobalMessage);
    }
    printMessage();
    console.log(message); // Error
  • Early return && Early exit

    조건에 위배 되면 빠른 return

    // bad 
    function upgradeUser(user) {
    	if (user.point > 10) {
      	// long upgrade login...
      }  
    }
    // good 
    function upgradeUser(user) {
    	if (user.point <= 10) {
      	return;
      }
    // long upgrade login...
    }
profile
이창목

0개의 댓글