본문 바로가기

JS7

JS, isNaN(), Number.isNaN() [ isNaN() ]매개변수가 숫자인지 검사하는 함수. NaN은 Not a Number을 뜻함주어진 값이 숫자이면 true, 아니면 false 반환isNaN() 메서드는 매개변수를 강제로 Number()로 바꾸는 문제점이 있음 기본적으로 NaN은 원시타입인 숫자타입의 값으로 number type으로 분류되어있음또한 NaN은 자신과 일치하지 않는 유일한 값임 isNaN(NaN); // 참isNaN(undefined); // 참isNaN({}); // 참isNaN(true); // 거짓isNaN(null); // 거짓isNaN(37); // 거짓// 자신비교NaN === NaN; // falsevar nan = NaN;nan === nan; // falseNaN == NaN; // falsenan == na.. 2024. 3. 29.
JS, 버블링, 캡쳐링 [ 버블링 ] 한 요소에 이벤트가 발생하면 이 요소에 할당된 핸들러가 동작하고 이어서 부모 요소의 핸들러가 동작하며 가장 최상단의 조상 요소를 만날때까지 이 과정이 반복되면서 요소 각각에 할당된 핸들러가 동작함 즉 이벤트 버블링은 HTML에서 이벤트가 발생했을 때, 해당 요소에서 이벤트가 처리된 후 상위 요소로 이벤트가 전파되는 현상을 의미 ▶ 예시 FORM DIV P 가장 안쪽의 p태크를 클릭하게 되면 에 할당된 onclick 핸들러가 동작 바깥의 에 할당된 핸들러가 동작 그 바깥의 에 할당된 핸들러가 동작 document 객체를 만날 때까지, 각 요소에 할당된 onclick 핸들러가 동작 p태그를 누르게 되면 p → div → form 순서로 3개의 얼럿 창이 뜨게 됨 ▶ 버블링의 이벤트 위임 이벤트.. 2023. 12. 6.
JS, 클로저 클로저는 함수와 함수가 선언된 어휘적 환경(Lexical Environment)의 조합 즉 함수 안에 함수를 선언한 환경에서의 관계를 의미함 해당 함수안에 함수를 선언한 환경은 내부 함수에서 외부 함수로 지역변수를 접근할 수 있지만 외부 함수의 실행이 끝나고 외부 함수가 소멸된 이후에도 내부 함수가 외부 함수의 변수에 접근할 수 있는 것을 의미함 자바스크립트는 함수를 리턴하고 리턴되는 함수가 클로저를 형성하기 때문에 접근이 가능함 클로저는 반환된 내부함수가 자신이 선언되었을때의 환경(Lexical Environment)에서의 스코프를 기억하기 때문에 접근이 가능함 function outerFn() { let x = 10; return function innerFn(y) { // innerFn 함수는 클로.. 2023. 12. 4.
JS, charAt() [ charAt( ) ] 문자열에서 지정된 위치에 존재하는 문자를 찾아서 반환하는 함수 인덱스의 순번은 0부터 시작되고 마지막 인덱스의 순번은 -1로 매겨지게 됨 인덱스 문자열의 길이를 벗어나게 되면 빈 문자열을 반환함 charAt() 함수는 인덱스(index)로 주어진 값에 해당하는 문자를 반환 ▶ 사용방법 문자열.charAt(index) ▶ 예시 let str = "HELLO WORLD".charAt(0);//'H' 만약 코테를 풀경우 문자열에서 바로 인덱스로 문자를 찾게 될경우 문자열 길이를 벗어나게 되면 undefined가 됨 이럴경우 charAt()을 사용하면 빈문자열로 반환하므로 유용 let str = '' str[0]//undefined str.charAt(0)//'' 2023. 11. 29.
JS, 에라토스테네스의 체 소수찾기 문제를 할때 반복문으로 풀게되면 효율성 테스트에서 시간초과로 실패가 뜸 이런 경우 에라토스테네스의 체 방법을 사용하면 효율적으로 문제를 풀어 효율성 테스트를 통과할 수 있음 [ 에라토스테네스의 체 ] 1부터 제외하고 2부터 N까지 자신을 제외하고 순차적으로 자신의 배수들을 지워가면 결국에는 소수들만 남는다는 원리 n까지가 아닌 √n까지만 검색해도 결과는 같음 ▶ 에라토스테네스의 체 과정 2부터 N까지 모든 정수를 적음 아직 지우지 않은 수 중 가장 작은 수를 찾음(이것을 P라고 하고 이 수는 소수) P를 지우고 아직 지우지 않은 P의 배수를 크기 순서대로 지움 아직 모든 수를 지우지 않았다면 다시 2번 단계부터 반복 ▶ 에라토스테네스의 체 코드 function solution(n) { let a.. 2023. 11. 23.
JS, 최대공약수 최소공약수 구하기 최대공약수를 구할때 기본적으로 반복문을 돌려서 최대공약수를 구할수 있으나 유클리드 호제법을 이용하여 구하면 쉽게 간단하게 구할 수 있음 유클리드 호제법 두 수의 최대공약수를 구하는 알고리즘 2개의 자연수 A, B에 대하여 A를 B로 나눈 나머지를 r이라고 한다면(단, A>B) A와 B의 최대공약수는 B와 r의 최대공약수와 같음 이 성질에 따라 B를 r로 나눈 나머지를 r'을 구하고 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을때 나누는 수가 A와 B의 공약수 예시 유클리드 호제법으로 24, 15의 최대 공약수 구하기 24 % 15 = 9 15 % 9 = 6 9 % 6 = 3 6 % 3 = 0 구현 function gcd(a, b){ return (a % b) === 0 ? .. 2023. 11. 3.
JS, use strict / undeclared [ use strict(엄격모드) ] ES5부터 지원하는 use strict는 암묵적인 "느슨한 모드(Sloppy Mode)"를 해제하고 명시적인 "엄격 모드(Strict Mode)"를 사용하는 방법 JS의 제한된 버전을 선택함으로써 런타임시 JS 코드에 대하여 향후 버전의 ECMAScript에서 사용될 수 있는 일부 구문을 제외하는 등보다 엄격한 parsing 및 error handling을 자발적으로 시행하도록 적용함으로써 일반적인 코딩 실수나 안전하지 않은 동작을 포착함 strict 모드에서는 일반적인 JS의 의미에 몇가지를 변경함 JS오류는 아니지만 함정이 될 어떤 일을 오류가 발생하도록 변경하여 제거 코드의 문제를 더 빨리 알리고 소스로 더 빨리 안내하므로 결과적으로 디버깅이 쉬워짐 JS 엔진의.. 2023. 10. 31.