souvenir

20.05.27 코딩공부 본문

2020년/TIL(Today I Learn)

20.05.27 코딩공부

풀빵이 2020. 5. 27. 20:11

[오늘 배운 것]

1. scope 다시 정리

1) 배열의 수정

let myArray = [2, 3, 4, 5]; //myArray라는 변수는 [2,3,4,5]를 가리킴

let ourArray = myArray; 
//myArray와 같은 주소값에 있는 [2,3,4,5]를 가리킴
//때문에 myArray === ourArray는 true

ourArray[2] = 25; 
//myArray와 같은 주소값을 가리켰기 때문에 ourArray도, myArray도 수정됨


ourArray = undefined; // ourArray가 가르키는 곳이 배열이 아닌 undefined를 가리키게 됨.

선언을 했을 때 어떤 값을 가리키는지를 정확하게 생각하면서 코드를 작성해야함을 다시 한번 느끼게 해주는 예제

 

 

2) 함수 안과 밖의 변수 선언

let score = 80;

function doStuff(value) {

  value = 90;

}


doStuff(score) //--> undefined

console.log(score) //--> 80

  함수를 적용하면서 score의 값도 변경될 줄 알았는데 아니여서 당황했다. 이 또한 결국 scope 문제였는데 이전에 봤던 예제와는 달리 함수 바깥의 변수와 안의 변수의 이름이 다르기 때문에 서로의 영향을 받을 수 없다는 것이 차이점이었다.  

 

구체적으로 진행이 되는 과정과 이유를 살펴보자면, 

 

2-1) console.log(score)

  • 함수 안에 있는 value let으로 선언되지 않았기 때문에
  • 바깥 스코프와 안의 스코프의 이름이 같다면 doStuff 실행된다면 안의 스코프에 의해 90으로 변경이 되겠지만
  • 스코프의 이름이 다르기 때문에 score 할당된 80 그대로 출력이 (?)

2-2) doStuff(score)

  • doStuff 안에 있는 value는 바깥 scope에는 영향을 끼칠 수 없기에 undefined로 출력됨.

2-3)

  • 특이한 것은 이 코드에서 value let으로 선언을 없음. 파라미터로 사용 중이라서 그런건가?

 

 

 

2. ...args 

1) 정의 : the arguments object

  • 한국말로 유사배열이라고 함. 'Array 형태'
  • 유사배열, 즉 array 형태라는 것은 length 외에 Array 내장 매소드는 가지고 있지 않다는 의미. 그러나 실제 Array로 변환할 수 있습니다

 

2) spread operator(...)

https://medium.com/@luke_smaki/javascript-es6-spread-operator-and-rest-parameters-b3e89d112281

- '...' 이 표시가 그 뒤에 오는 배열들을 풀어서(spread) 하나하나 적용하거나 출력할 수 있음.

let arr = ['Mike', 'mouse']

let value = [

  ...arr,

  'and',

  ...['Donald', 'piggy']
      
];

console.log(value) //-->['Mike', 'mouse', 'and', 'Donald', 'piggy']

 

 

 

[내일의 계획]

1. testbuilder 다시 점검

2. HTML 강의 1강 이상 수강하기

3. 객체지향 프로그래밍 개념 다시 정리하기(urclass 통해)

 

Comments