Javascript
[Vue 스터디#2] javascript - 정규표현식, 유효범위, 함수와 콜백
by Roseline Song | July 6, 2019
※ ‘생활코딩 - 자바스크립트 기초 문법’ 강의를 듣고 작성했습니다.
정규표현식
1. 정규표현식 단계
- 컴파일 : 패턴 만들기
- 실행 : 패턴으로 구체적인 명령 실행
// 정규표현식 리터럴
let pattern = /a/;
// 정규표현식 객체 생성자
let pattern = new RegExp('a');
let pattern = /a/;
> undefined
pattern = new RegExp('a');
> /a/
pattern = new RegExp('b');
>/b/
2. 정규표현식 메서드
RegExp.exec()
: 패턴 객체가 존재하는 배열을 리턴 (추출)- exec : 패턴과 매치하는 문자들을 인자로 전달된 문자열에서 찾아 리턴한다.
RegExp.test()
: 패턴 존재 여부에 따라 True, False 리턴
> pattern.exec('abcdef');
['a']
> let pattern = /a./;
> pattern.exec('abcdef');
['ab']
3. 문자열과 정규표현식
String.match(pattern)
:RegExp.match()
과 비슷하다.string.replace(pattern, 'A')
: 패턴을 찾아서 ‘A’로 바꾼다.
4. 옵션
- i : 대소문자를 구분하지 않는다.
- g: g를 붙이면 검색된 모든 결과를 리턴
- . : 문자 하나를 의미한다. 점이 2개면 abc까지 반환한다.
// i
let oi = /a/i;
>'Abcde'.match(oi)
['A']
// g
let og = /a/g;
>'abcdea'.match(og)
['a','a']
// 같이 사용 가능
let oi = /a/ig;
5. 캡처
- 패턴 객체를 변수처럼 재사용할 수 있다.
- () : 그룹
- \w : 문자 (A~Z, a~z, 0~9)
- + : 문자가 하나 이상인 경우
- \s : 공백 ex)
(\w+)\s(\w+)
- $2, $1 : 인덱스 (두번째 그룹, 첫번째 그룹 의미)
> let str = "coding everybody";
> let result = str.replace(pattern, '$2, $1');
everybody, coding
※정규표현식 테스트 사이트 : https://regexr.com/
※정규표현식 시각화 사이트 : https://regexper.com/
유효 범위
1. 전역 변수와 지역 변수
- scope : 변수의 수명
var vscope = 'global';
function fscope(){
var vscope = 'local'; // #1
alert(vscope);
}
fscope(); // local 출력
alert(vscope) // #2 : global 출력
- #1 : var 을 붙이는 것은 별도의 변수를 만든다는 것을 의미
- #2 : 함수 안에서 var을 붙이면 ‘지역 변수’로서 쓰겠다는 의미이기때문에 해당 변수는 함수가 끝난 뒤 제거된다. 따라서 global이 나온다.
// #1에 var를 안붙이는 경우
var vscope = 'global';
function fscope(){
vscope = 'local'; // #1
alert(vscope);
}
fscope(); // local 출력
alert(vscope) // #2 : local 출력
- #1 : #1에서 var를 붙이지 않으면 전역변수를 사용한다.
- #2 : vscope 변수에 ‘local’이라는 값으로 덮어씌운 상태이므로 local을 출력한다.
※ let으로 해도 마찬가지의 결과가 나온다.
2. 전역 변수의 사용
- 전역 변수 아래에 변수를 만들어준다.
MYAPP = {}
MYAPP.calculator = {
'left' : null,
'right' : null
}
MYAPP.coordinate = {
'left' : null,
'right' : null
}
MYAPP.calculator.left = 10;
MYAPP.calculator.right = 20;
function sum(){
return MYAPP.calculator.left + MYAPP.calculator.right;
}
document.write(sum());
- 전역 변수 자체의 사용도 싫다면 익명 함수로 묶어주어 지역 변수로 만든다.
(function(){}());
3. 유효 범위 대상 : 함수
자바, 파이썬에서는 블록 안에서만 유효한 변수가 되지만, 자바스크립트에서는 블록과 상관없이 전역변수로 인식된다.
4. 정적 유효범위
- 함수가 정의된 시점에서의 유효범위를 갖는다.
- 이를 정적 유효 범위, 렉시컬 스코핑이라고도 한다.
let i = 5;
function a() {
let i = 10;
b();
}
function b() {
document.write(i); // 5 출력 : 사용될 때가 아니라 정의될 때의 값을 참조하므로.
}
값으로서의 함수, 그리고 콜백
1. 값으로서의 함수
- 함수도 객체다
- 다시 말해 일종의 값이다.
- 함수 자체가 값이 되어 다른 변수에 담을 수 있다.
let func = function(){}
2. 메서드
- 객체의 속성으로 담겨진 함수를 메서드라고 한다.
또한, 함수는 값이기 때문에 다른 함수의 인자로서 전달할 수도 있다.
obj = { func : function(){} }
3. 함수의 용도 : 다른 함수의 인자, 리턴 값, 배열 값
- 리턴 값으로서의 사용 예시
이렇게 다양한 용도로 사용되는 함수를 first-class, citizen 등으로 부른다.
function cal(mode){
let funcs = {
'plus' : function(left, right){return left + right},
'minus' : function(left, right){return left - right}
}
return funcs[mode];
}
alert(cal('plus')(2,1));
alert(cal('minus')(2,1));
4. 콜백 함수
let sortfunc = function(a, b) {
return a-b;
// return b-a ; // 역순 정렬
}
array.sort(sortfunc) // #1, #2
- #1 : 여기서 sortfunc는 콜백 함수(callee), 함수에 의해 다시 한 번 호출되는 함수를 의미한다.
- #2 : 콜백 : 함수의 인자로, 함수를 전달한다.
WIKI : “프로그래밍에서 콜백(callback)은 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 의미한다.”
5. 비동기 처리
- 콜백은 비동기 처리에서 유용하게 사용된다.
- 콜백으로 지정하면 해당 작업이 끝났을 때 미리 등록한 작업을 실행하도록 할 수 있다.
- 웹에서 문서 전체를 다시 다운 받지 않고, 서버와의 통신을 통해 필요한 정보만 받는 것을 AJAX라고 한다.
- AJAX 를 사용하는 방법은 브라우저마다 다르다.
- jQuery에서의 비동기 처리
$.get(url, func, 'json'); // url에 접근했을 때, func 호출, func에 전달되는 인자값을 url에 접근했을 때 얻는 정보(여기서 func 매개변수에 callback함수를 인자로 준다.)
Subscribe via RSS