- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 비동기
- map
- js
- 모던 자바스크립트 deep dive
- 알고리즘
- deep dive
- 자바스크립트
- es6
- 프론트엔드
- 모던 자바스크립트
- Java Script
- JavaScript
- C++
- 네트워크
- 그림으로 배우는 http&network
- html
- 웹
- git
- 에러처리
- get
- 백준 실버
- error
- Angular
- React
- 이터러블
- git error
- http
- 상태관리
- 백준
- async
목록Front-End (72)
sharingStorage
15.1 var 키워드로 선언한 변수의 문제점 15.1.1 변수 중복 선언 허용 var키워드로 선언한 변수는 중복 선언이 가능하다. var x=1; var y=2; var x=100; var y; console.log(x); //100 위와 같이 동일한 이름의 변수가 이미 선언되어 있는 것을 모르고 변수를 중복 선언하면서 값을 할당하면 의도하지 않게 변수의 값이 변경되는 부작용이 발생한다. 15.1.2 함수 레벨 스코프 var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다. 따라서 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다. var x=1; if(true){ var x=10; } console.log(x); //10 15.1..
스코프란? 스코프(유효범위)는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다. var 키워드로 선언한 변수와 let, const로 선언한 변수의 스코프도 다르게 동작한다. 스코프 내에서 식별자는 유일해야하지만 다른 스코프에는 같은 이름의 식별자를 사용할 수 있다. 즉 식별자는 네임스페이스다. function foo(){ var x =1; var x=2; // var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용 // 따라서 아래 변수 선언문은 js엔진에 의해 var 키워드가 없는 것처럼 동작 console.log(x); //2 } foo(); function bar(){ let x=1; //let이나 const로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용하..
12장 함수 12.4.1 함수 선언문 함수는 함수 이름으로 호출하는 것이 아니라 함수 객체를 가리키는 식별자로 호출한다. var add1 = function add2 (x,y) { return x + y; }; console.log(add1(1,2)); // 3 식별자인 add1으로 함수를 호출한다. 12.4.3 함수 생성 시점과 함수 호이스팅 console.log(add(2,4)); // 6 console.log(sub(3,1)); // TypeError: sub is not a function //함수 선언문 function add (x,y){ return x+y; } //함수 표현식 var sub = function(x,y){ return x-y; } 위 예제와 같이 함수 선언문으로 정의한 함수는 ..
11장 원시 값과 객체의 비교 자바스크립트가 제공하는 7가지 데이터 타입은 크게 원시 타입과 객체 타입으로 구분할 수 있다. 이번 장을 시작하기 앞서 원시 타입과 객체 타입의 차이점을 비교해보도록 하겠다. 원시 타입 객체 타입 값의 유형 변경 불가능한 값(immutable) 변경 가능한 값(mutable) 변수에 저장되는 값 변수에 실제 값이 저장됨 변수에 참조 값이 저장됨 복사되어 전달되는 방식 원시 값이 복사되어 전달 (값에 의한 전달) pass by value 참조값이 복사되어 전달 (참조에 의한 전달) pass by reference 11.1 원시 값 원시 값은 변경 불가능 하므로 값을 선언한 후 값의 할당, 재할당할 때의 변수가 참조하는 메모리 공간의 주소가 변경된다. 11.1.1 문자열과 불변..
10장 객체리터럴 자바스크립트는 객체 기반의 프로그래밍 언어이며 자바스크립트를 구성하는 것중 원시값을 제외한 나머지 값(함수, 배열, 정규표현식 등)은 모두 객체이다. 객체타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조이며 원시 값은 immutable한 값이지만 객체는 mutable(변경가능)한 값이다. 객체는 0개 이상의 프로퍼티로 이루어져 있으며 프로퍼티는 프로퍼티 키와 프로퍼티 값으로 나뉜다. 함수도 프로퍼티 값이 될 수 있으며 이때 함수를 메서드(method)라고 부른다. var counter= { num=0; //프로퍼티 increase: function() { // 메서드 this.num++; } } 위처럼 객체는 프로퍼티와 메서드로 구성된 집합체이다. 10.2 객체 리터럴에..
9장 타입 변환과 단축 평가 9.1 타입 변환 자바스크립트의 모든 값은 타입이 있다. 개발자가 의도적으로 타입을 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅이라고 한다. 개발자의 의도와는 상관없이 표현식을 평가하는 중에 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되는 것을 암묵적 타입 변환 또는 타입 강제 변환이라고 한다. 명시적 타입 변환이나 암묵적 타입 변환이 기존 원시값을 직접 변경하는 것이 아니다. 원시 값은 변경 불가능한 값이므로 타입변환이란 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것이다. 9.2 암묵적 타입 변환 //암묵적 타입 변환 var x = 10; //문자열 연결 연산자는 x값을 바탕으로 새로운 문자열 생성 var str= x + ''; console.l..
6장 데이터 타입 자바스크립트(ES6)는 7개의 데이터타입을 제공한다. 6-1 숫자타입 C나 자바의 경우 정수와 실수를 구분해서 숫자타입을 제공하지만 자바스크립트는 독특하게 하나의 숫자타입 만 존재한다. 즉 정수를 표기하기위한 데이터타입 (int와 같은)이 존재하지 않고 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입도 제공하지 않는다. (타입스크립트라면? ) var binary = 0b0100001; // 2진수 var octal = 0o101; // 8진수 var hex = 0x41; // 16진수 console.log(binary); // 65 console.log(octal); // 65 console.log(0x41); // 65 console.log(octal === hex) // tu..
ngx-translate 라이브러리를 이요하여 Angular 애플리케이션에 다국어 변환 기능을 적용하는 방법을 정리해 보려고 한다. 다국어 변환에 있어서 Angular는 자체 i18n(Internationalization) 기능을 제공하므로 두가지 중 선택하면 된다. ngx-translate 설치 및 사용법 https://github.com/ngx-translate/core 공식문서에도 설명이 굉장히 잘 돼있다. 1. npm 모듈을 설치한다. npm install @ngx-translate/core 2. 설치가 완료되면 상위모듈 (ex AppModule)에 TranslateModule 을 import한다. (본인은 defaultModule) 이때 forRoot로 적용한다. loader를 설정하기 위해 h..
현재 BC카드사에서 위챗페이X BC카드 결제시스템 처리 프로그램의 백오피스를 JQuery로 구현중에 있다. 프론트 로직을 90%이상 작업을 마친 와중에 BC에서는 IE와 엣지가 주 사용 브라우저라는 얘기를 듣고 막판에 IE로의 호환성 검사를 시작했는데 아니나 다를까 로그인 화면부터 말썽이였다. 구글링을 해본 결과 IE에서 ajax GET방식으로 cache가 남으면 화면 오류가 날 수 있다고 한다. 별도의 세팅이 없는 IE의 경우 ajax로 호출하는 URL이 동일하고 파라미터가 없을 경우 재호출시에도 서버에 요청을 안하고 Cache를 이용하여 기존값을 보내주기 때문에 문제가 생긴다. 이런 경우 jQuery 옵션 중 cache항목을 이용하면되는데 이 옵션은 default가 true이기 때문에 해당옵션을 fa..
메뉴에 route를 구성해주어도 라우팅된 메뉴를 한번 더 크릭하면 아무일도 일어나지 않습니다. load(href: string) { this.router.navigateByUrl('/blank-for-reload', { skipLocationChange: true, }).then( () => { this.router.navigateByUrl(href); } ); } 많은 분들이 사용하는 방법이 blank한 페이지를 한번 띄워주고 다시 의도한 페이지를 띄우는 것인데 이는 새로고침과 같은 효과를 볼 수 있습니다. 메뉴를 클릭하면 직접 router에 navigateByUrl을 부르지 않고 위처럼 한번 감싼 load메소드를 호출함으로서 메뉴에서 버튼을 누르면 빈화면으로 갔다가 의도한 패스로 가는 것입니다. 주의..