일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- localtunnel
- 이터러블
- 렉시컬 환경
- hoisting
- 호이스팅
- 번들러
- 클론코딩
- 웹팩
- 넘블
- 유사배열
- AbortController
- JavaScript
- fetch 취소
- 로컬터널
- relatedTarget
- webpack
- 매클로태스크
- 자바스크립트
- 실행 컨택스트
- 호출 스택
- Call stack
- 로드마크
- pushstate
- Lexical environment
- 이벤트 루프
- 마이크로태스크
- debounce
- 화살표 함수
- 비동기 작업
- 함수형
- Today
- Total
목록Javascript (18)
내가 보려고 만든 개발 공부 일지
기본형태는 아래와 같다. someFunction.call([thisObj[, arg[, arg2[, ...]]]]) 첫번째 인자 thisObj 는 someFunction 의 this로 사용될 객체이다. 그 뒤로는 함수내에서 추가로 쓰일 파라미터 값들이다. ( 선택사항 ) 예제 ) var obj = { z : "zzz", a : "aaa", b : "bbb" } var test = function(arg1 = "test1", arg2 = "test2"){ console.log(`p1 : ${this.a} / p2 : ${this.b} / arg1 = ${arg1} / arg2 = ${arg2}`); } test.call(obj, 123, 456); // 결과 --> p1 : aaa / p2 : bbb / ..
아래처럼 어떤 변수값에 따라 다른 처리를 해주는 조건문이 있다고 하자, if( someValue == ~~ ){ . . . } 여기서 someValue 가 만약 undefined 나 null 같은 값이면 예외 처리가 필요할 것이다. 근데 이런 처리를 일일이 해주긴 넘 귀찮은 짓이니 보통은 if( someValue ){ . . . } 이렇게 값이 있을 경우만 조건을 타도록 코딩을 한다. someValue 가 꼭 true 나 false 같은 boolean 타입이 아니더라도 저 식이 가능한 이유는 null, undefined, '', 0, NaN ---> 이렇게 5개 값은 falsy 한 값으로 취급되기 때문이다. 이 5개를 제외하고 나머지는 다 truthy 하다고 보면된다.
먼저 Template literals 이란 백틱 ` 을 이용해서 스트링을 표현하는 ES6 문법이다. 기본적으로 스트링은 큰/작은 따옴표를 사용해서 표현하는데, 이는 중간에 변수값이 들어가거나 텍스트가 길어져서 개행을 하고플땐 항상 + 로 연결해줘야하고 이는 일일이 + 로 나눠주어야 하는 매우 불편한 작업을 동반하게된다. 그러나 template literal 은 ` ` 안에 ${} 문을 사용해 스크립트 변수를 바인딩할 수 있고 개행도 그냥 엔터로 (실제개행) 인식하기 때문에 편리하다. 이 백틱 문법을 한층 더 고급스럽게 사용법하는 방법이 Tagged templates 이다. Ex ) var person = 'ks'; var age = 19; function myTag(strings, personExp, a..
객체를 복사하고플때 그냥 var obj = obj2 이렇게 하면 obj 는 단순히 obj2 의 주소값만 참조게되어 obj2를 수정하면 obj 도 값이 바뀌게 되므로 이는 잘못된 방법이다. 1. 얕은 복사 var obj = {a : "aa", b : "bb"} 같은 단순한 객체는 for( var .. in .. ) 나 Object.assign( { }, obj ) 를 사용하여 새로운 객체를 만들수 있지만 만약 var person = { age: 19, name: { first: 'kwang', last: 'sunny' } } 이런 객체가 있을땐 위같은 방법을 써도 결국 person.name.last 값을 수정하면 복사된 객체의 last 값도 같이바뀌게된다 --> 1레벨만 복사되어 person.name 의 ..