javascript(7)
-
논리 부정 연산자 - 느낌표 한 개(!)와 두 개(!!)
JavaScript의 논리 연산자 중 NOT 연산자인 느낌표(!)는 부정(Negation)을 의미하며 피연산자의 논리 값을 반전시킨다. 즉, 입력값을 boolean으로 변환하여 값이 true면 false로, false면 true로 리턴한다. 느낌표 두 개(!!)는 이중 부정(부정의 부정)으로 긍정이 된다. 테스트 문자열 ("str")// true('str') !("str")// false !!("str")// true ("")// false('') !("")// true !!("")// false boolean true// true !true// false !!true// true false// false !false// true !!false// false NaN NaN// false(NaN) !NaN..
2023.10.11 -
slice, substr, substring 비교
slice slice(indexStart) slice(indexStart, indexEnd) substr (Deprecated) substr(start) substr(start, length) 첫번째 매개변수인 start는 탐색 구간의 시작점을 의미한다. start가 음수일 경우, 문자열의 뒤에서부터 가져온다. 두번째 매개변수인 length는 가져올 길이 값이며, 생략 가능하다. length를 생략할 경우, start에서부터 문자열 마지막까지를 가져온다. length 값이 음수일 경우 빈 값을 반환한다. (가져올 길이 값이 마이너스이므로 빈 값을 리턴) ℹ️ Note: substr() is not part of the main ECMAScript specification — it's defined in ..
2023.08.28 -
이벤트 전달 방식
이벤트 등록 TEST var button = document.querySelector('button'); button.addEventListener('click', foo); function foo(event) { console.log('event'); } 위와 같이 addEventListener() 메소드를 통해 화면에 동적인 기능을 추가할 수 있다. 이벤트 버블링 (Event Bubbling) 이벤트 버블링은 특정 화면 요소에서 이벤트가 발생했을 때, 상위 요소들로 전달되는 특성을 의미한다. * 상위 화면 요소 : HTML 트리 구조상 한 단계 위에 있는 요소. var divs = document.querySelectorAll('div'); divs.forEach(function(div) { div...
2022.09.26 -
클로저(Closure)
클로저(Closure) 클로저는 '포섭'이란 뜻으로, 독립적인(자유) 변수를 가리키는 함수이며 클로저 안에 정의된 함수는 만들어진 환경을 기억한다. 클로저 = 함수 + 함수를 둘러싼 환경(Lexical Environment) 예제 1 function outerFunc() { let outerVar = "outer"; function innerFunc() { console.log(outerVar); } return innerFunc; } var test = outerFunc(); // test 변수에 innerFunc 함수를 리턴함 // 유효범위의 어휘적 환경을 유지 test(); //리턴된 innerFunc 함수를 실행(outerVar 변수에 접근) test는 outerFunc이 실행될 때 생성된 inn..
2022.09.22 -
호이스팅(Hoisting)
호이스팅(Hoisting) 호이스팅은 '끌어올리기' 라는 뜻으로, 함수 또는 변수가 끌어올려져 최상단에 선언되는 현상을 말한다. function foo() { console.log('foo'); } foo(); // foo foo(); // foo function foo() { console.log('foo'); } Java와 다르게 함수 선언 자체를 나중에 해줘도 함수를 끌어올려서(Hoist) 갖고온다. 호이스팅은 JavaScript 엔진이 가지고 있는 특징이다. 함수표현식과 같이 에러가 발생하는 예외가 있기 때문에 신중히 사용해야 한다. 호이스팅이 발생하는 코드는 이해하기 어려워지고 > 유지보수가 힘들어지기 때문에 > 호이스팅 현상은 방지하는 것이 좋다. 호이스팅 적용 대상 호이스팅은 var 변수 선..
2022.09.22 -
스코프(Scope)
스코프(Scope) 스코프는 '범위'라는 뜻으로, JavaScript에서는 변수에 접근할 수 있는 범위를 뜻한다. 스코프에는 전역 스코프(Globap Scope)와 지역 스코프(Local Scope)가 있다. 전역 스코프(Global Scope) 변수가 함수 바깥이나 중괄호({}) 바깥인 전역에 선언되었다면 전역 스코프에 정의된 것이다. 전역 스코프는 어느 곳에서든지 해당 변수에 접근할 수 있다. 지역 스코프(Local Scope) 전역 스코프와 반대로, 변수가 함수 안이나 중괄호({}) 안에 선언된 경우 지역 스코프에 정의된 것이다. 지역 스코프는 해당 지역에서만 접근할 수 있다. 해당 지역을 벗어난 바깥에서는 접근이 불가능하다. JavaScript에는 블록 스코프, 함수 스코프 두 개의 지역 변수가 ..
2022.09.22 -
공백 문자(whitespace)를 인코딩하면
사내 모든 서비스를 차세대 플랫폼으로 이관하지는 못했다. 그래서 신 -> 구 페이지로 연결해야되는 경우가 빈번하고, 간혹 구 페이지로 이동 시 queryString 문자열을 EUC-KR로 인코딩해서 보내야하는 경우가 있다. 그러면 UTF-8 문자열을 EUC-KR로 변환해야하는데, JavaScript에서는 복잡한 작업이고 Java에서는 URLEncoder로 한 번에 해결이 된다. 아무튼, 문제를 해결하면서 Java와 JavaScript에서 공백 문자 인코딩 방식이 다른걸 확인했다. Java URLEncoder.encode String str = "test for encoding"; System.out.println(URLEncoder.encode(str, StandardCharsets.UTF_8)); //..
2020.12.10