programmers 내적 (javascript) , 변수선언, 호이스팅 공부

🏀 나의 풀이

function solution(a, b) {
    var answer = 0;
    for(let i in a){
        answer += a[i]*b[i];
    }
    return answer;
}

🏀 추가공부

javascript 변수 선언에 대해

var

var name = 'baskikball'
    console.log(name) // baskikball
var name = 'javascript'
    console.log(name) // javascript
  • 같은 변수를 한 번 더 선언했지만 각기 다른 값이 출력된다.
  • 코드량이 많아진다면 변수의 사용을 파악하기 힘들고 값이 바뀔 수 있다.

위와 같은 문제를 해결하기 위해 ES6이후 let과 const가 추가되었다.

let

  let name = 'baskikball'
    console.log(name) // baskikball
  let name = 'javascript'
    console.log(name) 
    // Uncaught SyntaxError: Identifier 'name' has already been declared
  • name이 이미 선언되었다는 메시지와 함께 에러가 뜬다.
  • 변수 재선언이 불가능하다.

let vs const

 let name = 'baskikball'
    console.log(name) // baskikball
 let name = 'javascript'
    console.log(name) 
    // Uncaught SyntaxError: Identifier 'name' has already been declared
    name = 'durant'
    console.log(name) //durant
  • let은 변수에 재할당이 가능.
const name = 'baskikball'
    console.log(name) // baskikball
const name = 'javascript'
    console.log(name) 
    // Uncaught SyntaxError: Identifier 'name' has already been declared
    name = 'durant'
    console.log(name) 
    //Uncaught TypeError: Assignment to constant variable.
  • const는 변수 재선언, 변수 재할당 모두 불가능하다.

호이스팅에서 var와 let의 차이

console.log(foo); // undefined
	var foo;
console.log(bar); // Error: Uncaught ReferenceError: bar is not defined
	let bar;
  • let으로 선언된 변수는 스코프의 시작에서 변수의 선언까지 일시적사각지대(TDZ) 에 빠지게 된다.

결론

  • 변수 선언에는 기본적으로 const를 사용하고, 재할당이 필요한 경우에 한정해 let을 사용하는 것이 좋다.
  • 객체를 재할당하는 경우는 생각보다 흔하지 않다. const를 사용하면 의도치 않은 재할당을 방지해 줄 수 있다.

앞으로는 간단한 문제더라도 이런 점들을 고려하면서 풀어봐야겠다.

좋은 웹페이지 즐겨찾기