Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ...args
- .toLocalString()
- 1주차
- 2020년 준비
- 2주차
- 4주차
- 5주차
- array
- array method
- async
- authentication
- AWS
- codestates
- commit
- Cookie
- CSS
- Data Structre
- Data Structure
- DataSturcutre
- Date.now()
- DB에 사진 저장하기
- Dev log
- DOM
- EC2
- EC2로 웹 만드는 방법
- EC2와 S3 연결하기
- element
- Es5
- ES6
- event 객체
Archives
- Today
- Total
souvenir
20.05.27 코딩공부 본문
[오늘 배운 것]
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 통해)
'2020년 > TIL(Today I Learn)' 카테고리의 다른 글
20.05.28 코딩연습_HTML (0) | 2020.05.29 |
---|---|
20.05.28 코딩연습 (0) | 2020.05.29 |
20.05.06 코딩연습_늦게나마 올려보는 코딩연습 기록 (0) | 2020.05.14 |
[Pre][코드스테이츠] 6주차 Reflection (0) | 2020.05.12 |
20.05.04 코딩연습 (0) | 2020.05.05 |
Comments