문제 

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.

 

 

입출력

Example 1:
Input: nums = [2,7,11,15], target = 9 
Output: [0,1] Output: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:
Input: nums = [3,2,4], target = 6 
Output: [1,2]
Example 3:
Input: nums = [3,3], target = 6 
Output: [0,1]

 

 

제약

Constraints:

  • 2 <= nums.length <= 10^4
  • -10^9 <= nums[i] <= 10^9
  • -10^9 <= target <= 10^9
  • Only one valid answer exists.

 

 

코드

var twoSum = function(nums, target) {
    for(i=0; i<nums.length-1; i++) {
        for(j=i+1; j<nums.length; j++) {
            if(nums[i]+nums[j] == target) return [i, j]
        }
    }
};

 

 

 

객체 리터럴

let user = {
	name: ‘angel’,
	age: 20
}

 

 

비슷한 객체를 여러 개 만들어야 할 때 ex)회원, 상품

→  생성자 함수 사용

 

 

 

 

↓[코딩앙마] 자바스크립트 중급 강좌 링크

https://www.youtube.com/watch?v=8hrSkOihmBI 

 

 

 

let, const, var 차이점

  -  var는 한 번 선언된 변수를 다시 선언할 수 있다.

  -  let은 한 번 선언된 변수를 다시 선언할 수 없다.

  -  var는 선언하기 전에 사용할 수 있다.

 

var name; //호이스팅

console.log(name); //undefined 출력

name = ‘Angel’; //할당

→  var로 선언한 모든 변수는 코드가 실제로 이동하지는 않지만 최상위로 끌어올려진 것처럼 동작한다.

    (=호이스팅, hoisting)

→  undefined가 출력되는 이유는 선언은 호이스팅 되지만, 할당은 호이스팅 되지 않기 때문이다.

 

 

 

호이스팅(hoisting): 스코프 내부 어디서든 변수 선언은 최상위에 선언된 것처럼 행동

 

letconst도 호이스팅이 가능하지만 TDZ(Temporal Dead Zone)에 영향을 받아 에러가 발생한다.

TDZ에 있는 console.log(name);Reference Error가 발생한다.

다시 말해, TDZ에 있는 변수들은 사용할 수 없다.

 

let const는 할당을 하기 전에 사용할 수가 없다.

이는 코드를 예측 가능하게 하고, 잠재적인 버그를 줄일 수 있다.

 

 

호이스팅은 스코프 단위로 일어난다.

여기서 스코프는 showAge() 내부이고, let으로 선언된 age변수가 호이스팅을 일으킨다.

만약 호이스팅이 되지 않았다면 함수 밖에서 선언된 age = 30이 콘솔에 찍혀야 한다.

하지만 Error가 뜨는 것으로 보아 let도 호이스팅이 일어난다는 것을 알 수 있다.

 

 

 

변수 생성 과정

let

1.  선언

2.  초기화

3.  할당

 

var

1.  선언 및 초기화

2.  할당

→  초기화 단계에서 undefined를 할당

 

const

1.  선언 + 초기화 + 할당

ex)  

const age; //Error 발생

age = 20;

※  letvar는 선언만 하고 나중에 할당하는 것이 가능, const는 불가능

 

 

 

var함수 스코프(function-scoped)

let, const블록 스코프(block-scoped)

 

블록 스코프 함수, if, for, while, try-catch문 등

ex)         

const age = 30;

if(age>19) {
	var txt = ‘성인’;
}
console.log(txt); //“성인” 출력

→  txt 변수가 let 혹은 const로 선언되었다면 if문 밖에서 사용 불가

 

 

 

↓[코딩앙마] 자바스크립트 중급 강좌 링크

https://www.youtube.com/watch?v=ocGc-AmWSnQ 

 

 

+ Recent posts