일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트 연결리스트
- lodash
- 프론트엔드
- til
- leetcode
- 자바스크립트 문제 풀이
- 리액트쿼리
- leetcode문제풀이
- next13
- 자바스크립트 알고리즘
- 프로그래머스
- Next
- stack문제
- 자바스크립트 알고리즘 문제
- 알고리즘문제풀이
- 타입스크립트
- Next.js13
- JavaScript
- 자바스크립트 문제
- react
- NPM
- JS
- 자바스크립트코딩테스트
- HTML
- Baekjoon
- 자바스크립트
- 자바스크립트 문제풀이
- 리액트
- 제로베이스
- CSS
- Today
- Total
목록Code note (225)
코드노트
- 내부슬롯, 내부 메서드는 ECMAScript 사양에 정의된 대로 구현되고 JS 엔진에서 동작한다. 그러나 개발자가 직접 접근할 수 없다. - 내부 슬롯, 내부 메서드는 JS 엔진의 구현 알고리즘을 설명하기 위해 사용하는 의사 프로퍼티( pseudo property )와 의사 메서드( pseudo method ) 이다. *JS 엔진의 내부 로직 - 단, 일부 내부 슬롯과 내부 메서드에 한하여 간접적으로 접근할 수 있는 수단을 제공 * [[...]] 로 감싼 이름들이 내부 슬롯과 내부 메서드 ex) 모든 객체는 [[ Prototype ]]이라는 내부 슬롯을 갖는다. - 내부 슬롯은 JS 엔진의 내부 로직이기 때문에 직접 접근할 수 없지만 [[ Prototype ]] 내부 슬롯의 경우, __proto__를..
var 키워드 변수는 선언에 의해서 생성되고 할당을 통해 값을 갖게 된다. 그리고 언젠가 소멸한다. * 변수에 생명 주기가 없다면 한번 선언된 변수는 프로그램을 종료하지 않는 한 영원히 메모리 공간을 점유하게 된다. 변수는 자신이 선언된 위치에서 생성되고 소멸한다. 전역 변수의 생명 주기는 애플리케이션의 생명 주기와 같다. 하지만 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다. 전역 변수의 생명주기 - 전역 변수 : 변수 선언은 다른 코드가 실행되기 이전인 런타임 이전 단계에서 자바스크립트 엔진에 의해 먼저 실행 된다. - 함수와는 달리 명시적인 호출이 없어도 실행 * 마지막 문이 실행되어 더 이상 실행할 문이 없을 때 종료 - var 키워드로 선언한 전역 변수는 전..
객체와 마찬가지로 스코프 또한 중요한 개념중에 하나이다. 스코프(Scopr, 유효범위) - 변수, 함수와 같은 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)를 사용할때 유효범위 - var, let, const 키워드로 선언한 변수의 스코프도 다르게 동작 - 다른 프로그래밍 언어의 스코프와 구별되는 특징이 있기 때문에 주의 필요 - 함수의 매개변수는 함수 몸체 내부에서만 참조할 수 있고, 함수 몸체 외부에서는 참조할 수 없다. 스코프(유효범위)가 다르기 때문이다. 구분 설명 스코프 변수 전역 코드의 가장 바깥 영역 전역 스코프 전역 변수 지역 함수 몸체 내부 전역 스코프 지역 변수 - 변수 자신이 선언된 위치에 의해 스코프가 결정 - 전역 변수는 어디서나 참조할 수 있다. - 지역변수는 자신의 지..
즉시 실행 함수 (Immediately Invoked Function Expression) - 함수 정의와 동시에 즉시 호출되는 함수 - 단 한번만 호출 되며 다시 호출할 수 없다. * 즉시 실행 함수는 ( ... ) 감싸주어야 한다. 그렇지 않으면 Error가 발생한다. 그리고 그 뒤에 ()를! function () {...}(); // SyntaxError: Function statements require a function name - 만약 (...)로 감싸주지 않으면 선언문 형식에도 맞지 않기 때문이다. ??? 그럼 기명함수로 호출하게 되면 Error가 발생하지 않을까? function foo() {...}(); // SyntaxError: Unexpected token ')' // functi..
객체는 원시값이 아닌 참조값으로 변경이 자유롭다고 했다. 자바스크립트 원시값 그리고 객체,참조값 원시 값, 참조 값의 차이 - 원시값은 변경 불가능한 값, 참조값은 변경이 가능한 값 * 객체 타입 = 참조 값 / 즉 객체는 변경이 가능한 값이다. - 원시값을 변수에 할당하면 변수에는 실제 값이 저 codeno-te.tistory.com - 여기서 문제점이 생긴다. - 객체를 전달한 뒤 변경할 경우에는 원본이 훼손된다. - 외부 상태, 즉 함수 외부에서 함수 몸체 내부로 전달한 참조값에 의해서 원본 객체가 변경되는 부수효과가 발생한다. * 코드의 복잡성을 증가시킨다. * 가독성을 해치는 원인이 된다. * 코드가 많아지면 외부 상태가 변하는지 아닌지 알기 어렵다.( 에러 발생 위험이 크다) - 객체가 변경되..
매개변수(parameter, 인자) - 함수를 정의할 때 선언하며 함수 내부에서 변수와 동일하게 취급 - 매개변수는 함수가 호출될 때 생성이 된다. - 일반 변수와 마찬가지로 undefined로 초기화된 이후 인수가 순서대로 할당된다. * 함수가 호출되지 않았을땐 매개변수를 활용할 수 없다. - 매개변수의 개수는 제한되고 있지 않다. 그러나 최대 3개 이상을 넘지 않는 것을 권장한다. * 매개변수가 적을수록 좋다. - 그 이상의 매개변수가 필요하다면 하나의 매개변수를 선언하고 객체를 인수로 전달받는게 유리하다. * jQuery의 ajax메서드 인수(argument) - 값으로 평가될 수 있는 표현식이어야한다. - 함수를 호출할 때 지정하며, 개수와 타입에 제한이 없다. - 매개변수는 함수 몸체 내부에서만..
함수를 사용하면서 몰랐던 부분들을 기초부터 하나하나 정리하고자 한다. 알았지만 그냥 넘어갔던부분들까지.. 자바스크립트를 공부하면서 처음에는 대충 넘어갔었고, 코드를 작성하면서 모르는부분들을 검색했었다. 함수 자체의 용어, 네이밍, 스코프, 호이스팅들을 모두 이해하지 않고 사용하니 에러가 너무 많이 발생하는것 같다. 에러를 발생시키면서 공부를 한다? 에러가 생기지 않게 기초지식을 다시 공부를한다? 무엇이 맞는지는 모르겠다. 그러나 알고있는 부분들을 다시한번 상기시키고 모르는 부분들은 다시 배우면서 정리를 해놓는게 좋을것 같다는 생각이 들었다. 자바스크립트를 처음시작하는사람이 있다면 지루하고 시간이 조금은 들지만 기초를 탄탄하게 쌓아가는게 좋을거라고 말하고 싶다. 자바스크립트에서는 다른 언어들과는 다르게 함..
NaN === NaN // false Object.is(NaN, NaN) // true -0 === +0 // true Object.is(-0, +0) // false 동등 비교 연산자(==), 일치 비교 연산자(===)는 +0, -0을 동일하다고 평가한다. 그리고 NaN 과 NaN을 비교하면 다른값으로 평가한다. Object.is() 메서드를 사용하면 정확한 비교 결과를 반환한다.
See the Pen Untitled by beomjunkwon (@bjkwon) on CodePen. //문서의 전체 높이 : document.documentElement.scrollHeight // 보여지는 브라우저의 높이 : window.innerHeight // 스크롤의 위치 : document.documeneElement.scrollTop // 문서의 전체 높이 - 보여지는 브라우저의 높이 * 100% window, document 속성을 통해서 마우스 위치를 추적하여 스크롤바가 채워지는 애니메이션 구현
자바스크립트 원시값 그리고 객체,참조값 원시 값, 참조 값의 차이 - 원시값은 변경 불가능한 값, 참조값은 변경이 가능한 값 * 객체 타입 = 참조 값 / 즉 객체는 변경이 가능한 값이다. - 원시값을 변수에 할당하면 변수에는 실제 값이 저 codeno-te.tistory.com 객체는 프로퍼티로 구성되어 있는 집합체이다. 프로퍼티는 key, value로 구성되어 있다. 프로퍼티 key는 프로퍼티 value에 접근할 수 있는 이름으로 보면된다. 식별자의 역할을 한다. let property = { key: "value", }; console.log(property); // { key: 'value' } console.log(property.key); // value console.log(property[..