일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Open EntityManager
- javageneric
- 에이치투데이터베이스
- JPA Hint & Lock
- dockercmd
- 데이터베이트h2
- MySqlType
- springboot기본설정
- JPAproxy
- 자바제너릭
- gitinitial
- 이해와 원리
- 임베디드타입
- 스프링부트
- spring
- 스프링부트기본설정
- 제이피큐엘쿼리
- JDBC connection pool
- Git
- springbootproxy
- OSIV
- httppie
- sql
- jpqlquery
- JPA값타입
- JPAmapping
- jpa
- embededtype
- JPA프록시
- springbootH2
Archives
- Today
- Total
빡코
[개념] JS_개념정리 본문
기본문법1
Math.pow(3,2); // 9, 3의 2승
Math.round(10.6); // 11, 10.6을 반올림
ath.ceil(10.2); // 11, 10.2를 올림
Math.floor(10.6); // 10, 10.6을 내림
Math.sqrt(9); // 3, 3의 제곱근
Math.random(); // 0부터 1.0 사이의 랜덤한 숫자
기본문법2
function get_members() {
return ['egoing', 'k8805','sorialgi'];
}
members = get_members();
members.push('chris'); //꼬리에다 추가
members.unshift('james'); //앞에다가 값 추가
for(i=0;i< members.length;i++){
console.log(members[i].toUpperCase());
}
var str = 'html,css,javascript,jquery,apache,php';
str.split(',');
console.log(str);
str.split(',',2);
console.log(str);
//
var emails = 'a@cb.com@b@cb.com@c@cb.com@cb.com';
emailArray= emails.split('g');
emailStr = '';
for(var i=0; i<emailArray.length;i++){
emailStr += emailArray[i]+',';
}
console.log(emailStr);
//객체와 반복문
var grades = {'egoing':10, 'k8805':6, 'sorialgi':80};
for(key in grades){
console.log("key: "+key+" value: "+grades[key]+" <br/>" ); }
//객체지향 프로그래밍
var grades ={ 'list' : {'egoing' : 10, 'k8805': 8, 'sorialgi': 80},
'show': function (){
for(var name in this.list){
console.log(name, this.list[name]); }
}
}
console.log(grades['list']['egoing']);
grades.show();
정규표현식
정규표현식 리터럴
var pattern = /a/ ;
정규표현식 객체 생성자
var pattern = new RegExp('a');
//String.match()
console.log('abcdef'.match(pattern)); // ["a"]
console.log('bcdefg'.match(pattern)); // null
//String.replace()
onsole.log('abcdef'.replace(pattern, 'A')); // Abcdef
//옵션
//i, i를 붙이면 대소문자를 구분하지 않음
var xi = /a/;
console.log("Abcde".match(xi)); // null
var oi = /a/i;
console.log("Abcde".match(oi)); // ["A"];
//g g를 붙이면 검색된 모든 결과를 리턴한다.
var xg = /a/;
console.log("abcdea".match(xg)); //[a]
var og = /a/g;
console.log("abcdea".match(og)); //['a','a']
//캡쳐
var pattern = /(\w+)\s(\w+)/;
var str = "coding everybody";
var result = str.replace(pattern, "$2, $1"); //$2두번재 그룹 //$1은 첫번째 그룹
console.log(result);
//결과값: everybody, coding
//치환
var urlPattern = /\b(?:https?):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*/gim;
var content = '생활코딩 : http://opentutorials.org/course/1 입니다. 네이버 : http://naver.com 입니다. ';
var result = content.replace(urlPattern, function(url){
return '<a href="'+url+'">'+url+'</a>';
});
console.log(result);
지역변수 전역변수
변수를 선언할 때는 꼭 var을 붙이는 것을 습관화해야 한다. 전역변수를 사용해야 하는 경우라면 그것을 사용하는 이유를 명확히 알고 있을 때 사용하도록 해야함
var scope = 'global';
function fscope(){
var vscope = 'local';
console.log(vscope);
}
fscope(); //local
console.log(vscope); //global
//동일한 이름의 변수 사용예
var vscope = 'global';
function fscope(){
var vscope = 'local'; //#1.지역변수(새로운변수인가?)
vscope = 'local';//함수 안에서 로컬변수가 먼저 존재하는지 확인하기 하기 때문에
//#1번때문에 지역변수로 인식 >> 전역변수의 값을 변경하지 않음
}
fscope();
console.log(vscope); //결과 global
유효범위 효용성
값으로서의 함수 콜백
//1번
function cal(func, num){
return func(num)
}
function increase(num) {
return num+1;
}
function decrease(num) {
return num-1
}
console.log(cal(increase,1)); //함수자체를 매개변수로 받을 수 있다.
console.log(cal(decrease,1));
//2번
function cal(mode) {
var funcs = {
'plus': function (left, right)
{return left + right},
'minus': function (left, right)
{return left - right}
}
return funcs [mode];
}
console.log(cal('plus')(2,1)); //결과:3
console.log(cal('minus')(2,1)); //결과:1
//3번 배열에 저장
//first-classs citizen or object
var process = [
function (input) { return input +10;},
function (input) { return input * input;},
function (input) { return input /2;}
];
var input =1;
for(var i=0;i<process.length;i++){
input = process[i](input); //input값의 변화: 1+10 >> 11*11 >> 121/2 = 최종값: 60.5
}
console.log(input);
//4. 정렬
var numbers = [20, 10, 5, 1, 74, 36,87];
var sortfunc = function(a,b){
console.log(a,b);
return a-b; //오름차순 정렬(양수이면 잘바꿈)
//retrun b-a;//내림차순 정렬
}
console.log(numbers.sort(sortfunc)); //sortfunc가 콜백함수가된다.
클로저 및 내부함수, 외부함수
Private 속성은 객체의 외부에서는 접근 할 수 없는 외부에 감춰진 속성이나 메소드를 의미한다. 이를 통해서 객체의 내부에서만 사용해야 하는 값이 노출됨으로서 생길 수 있는 오류를 줄일 수 있다. 자바와 같은 언어에서는 이러한 특성을 언어 문법 차원에서 지원하고 있다.
function outter() {
function inner() {
var title = 'coding everybody';
console.log(title);
//결과값: coindg everybody
//내부함수는 외부함수의 지역변수에 접근할 수 있다.
}
inner();
}
outter();
//클로저란 내부함수가 외부함수의 지역변수에 접근 할 수 있고,
//외부함수는 외부함수의 지역변수를 사용하는 내부함수가 소멸될 때까지 소멸되지 않는 특성을 의미한다.
function outter() {
var title = 'coding everybody';
return function(){
console.log(title);
}
}
inner = outter(); //여기서 죽어야하지만!!계속해서 살아있음!!!
inner();
//결과값: coding everybody
//활용 실용 예제는?
function factory_move(title) {
return {
//get_title이라는 메소드를 호출하면, title이라는 값을 리턴해준다. 그럼 이 title이라는 값은 어디서 오는걸까?
// factory_move(title) 여기에서 온다
get_title : function () {//내부함수라고 볼 수 있다. 객체의 소속이다.
return title;
},
set_title : function (_title) {
title = _title
}
}
}
ghost = factory_move('Chost in the shell');
matrix = factory_move('Matrix');
console.log(ghost.get_title());//Chost in the shell
console.log(matrix.get_title());//Matrix
//여기서 이렇게 다시 한다면?
ghost.set_title('공각기동대');
//실행된 시점에서의 외부함수에 접근할 수 있었고,
console.log(ghost.get_title()); //공각기동대
console.log(matrix.get_title());//Matrix
//외부함수 factory_movie를 공유하고 있는 ghost와 matrix의 get_title의 결과는 서로 각각 다르다.
//그것은 외부함수가 실행될 때마다 새로운 지역변수를 포함하는 클로저가 생성되기 때문에
//ghost와 matrix는 서로 완전히 독립된 객체가 된다.
//factory_movie의 지역변수 title은 2행에서 정의된 객체의 메소드에서만 접근 할 수 있는 값이다.
//이 말은 title의 값을 읽고 수정 할 수 있는 것은 factory_movie 메소드를 통해서 만들어진 객체 뿐이라는 의미다.
//JavaScript는 기본적으로 Private한 속성을 지원하지 않는데, 클로저의 이러한 특성을 이용해서 Private한 속성을 사용할 수 있게된다.
//**set으로만 수정할 수 있고, get으로만 가져올수 있게 하면 값을 안전하게유지할수 있다.
//클로저 함수에서 자주 일어나는 실수는?
var arr = []
for(var i = 0; i< 5;i++){
arr[i] = function (id) {
return function () {
return id;
}
}(i);
}
for(var index in arr){
console.log(arr[index]());
}
//결과값:0 1 2 3 4
참조
https://opentutorials.org/course/743/6495