기본 콘텐츠로 건너뛰기

[ES6]모던 자바스크립트(javascript) 개발을 위한 ES6 강좌 Scope

let은 스코프 단위로 사용 가능

function home(){
    var homevar = "homevar";
    for(let i =0; i<100; i++){
        console.log(i);
    }
//console.log(i);
if(true){
    let myif= "myif";
}
console.log(myif);
}
let대신 var이라면 myif가 나오지만 let은 undefined나옴


let은 closure 문제도 해결

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>javascript</li>
        <li>java</li>
        <li>python</li>
        <li>django</li>
    </ul>
</body>
<script type="text/javascript">
    var list = document.querySelectorAll("li");
    for(let i=0; i<list.length; i++){
        list[i].addEventListener("click", function(){
            console.log(i + '번째 리스트입니다.')
        })
    }
</script>
</html>
for문의 var를 쓰면 클로저 때문에 '4번째 리스트입니다.'가 나오지만 let을 쓰면 '0~3번째 

리스트입니다.'로 나옴(블록 스코프를 참조해서 사용하기 때문)


const는 변하지 않는 상수에 사용

function home(){
    const homename = 'my house';
    //대문자 표기법 상수야 건들지마 정도의 의미
    var HOME_NAME = 'my house';
    console.log(homename);
    //homename = 'your house';
    console.log(homename);
    
    const homeNumber = [1,2,3,3];
    console.log(homeNumber);
    //homeNumber=['1','2'];
    console.log(homeNumber);
    //const를 기본으로 사용한다.
    //그런데 변경이 될 수 있는 변수는 let을 사용한다.
    //var는 사용하지 않는다.
}
home();
변경할 수 없는데 변경을 시도 하면 에러가 납니다. 

따라서 const는 기본으로, 변경이 될 수 있는 변수는 let var는 거의 사용하지 않는다.


const는 재할당이 안되는거지 배열과 오브젝트의 값 변경은 가능

function home(){
    const list = ["apple", 'orange', 'watermelon'];
    list.push('banana');
    console.log(list);
}
home();
//immutable array를 어떻게 만들지?
//뒤로가기, 앞으로가기 할때 데이터 갖고 있어야할때가 있음
const list = ["apple", 'orange', 'watermelon'];
list2 = [].concat(list,'banana');
console.log(list, list2);
뒤로가기, 앞으로 가기 할때 데이터를 갖고 있어야 할때는 list2처럼 활용...??이라는데..??

저렇게 새로운 녀석을 만들어서 쓰라는거 같은데.....

댓글

이 블로그의 인기 게시물

mac 맥 맥북 Brew 완전 삭제

맥북에서 Brew 초기화 Brew를 써서 h2를 쓰려고 하는데 brew install h2가 안되서 이리 저리 알아보다가 완전 삭제 후 다시 설치 하니까 되서 그 방법을 남겨놈 1. 터미널에 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)" 입력후 y랑 뭐 비번.. 2. /usr/local 폴더에서 Homebrew 폴더 삭제 rm -rf Homebrew/ 권한설정으로 잘.....삭제하고 3. 다시 설치 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 좀 오래걸리니까 기다려야한다는걸 배움... 출처.... https://discourse.brew.sh/t/error-no-formulae-found-in-taps/8331/9

메이븐으로 라이브러리 인식

 간혹 퍼블릭 jar가 아닌 파일이 있는데 그럴때 쓰면 될듯 <dependency> <groupId> SimpleCryptLib </groupId> <artifactId> SimpleCryptLib </artifactId> <version> 1.1.0 </version> <scope> system </scope> <systemPath> ${basedir}/src/main/webapp/WEB-INF/lib/SimpleCryptLib-1.1.0.jar </systemPath> </dependency> version, scope, systemPath는 꼭 작성해야 한다 groupId, artifactId, version은 암거나 해도 되는거 같음 최근(2021.05.04)스프링 부트    < dependency > < groupId > NiceID </ groupId > < artifactId > NiceID </ artifactId > < version > 1.0 </ version > < scope > system </ scope > < systemPath > ${basedir}/src/main/resources/lib/NiceID.jar </ systemPath > </ dependency > 이걸 추가해주는것도 필요할지도..?? < build > < plugins > < plugin > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-maven-plugi

ORA-28000 계정이 잠금되었습니다 계정 잠길때

오라클 계정이 잠길때 해제방법 증상 t he account is locked 오류 발생 원인 Oracle 에서 t he account is locked  에러가 나는 원인은 ● 잘못된 패스워드로 설정횟수만큼 접속 시도시 Lock. ●  30일동안(Default) 해당 계정으로 로그인을 하지 않았을 경우 Lock. 등이 있다. 해결방법 command창에서 * 로컬일경우, sqlplus "/as sysdba"  또는  sqlplus /nolog  conn /as sysdba  * 로컬이 아닐 경우, sqlplus /nolog conn sys/password@<sid> 이름/패스워드@sid로 입력 로 접속 후 SELECT username, account_status, lock_date FROM dba_users; 으로 Lock이 된 사용자를 확인한 후 LOCKED<TIMED> 라고 되있으면, 패스워드 설정횟수 입력 오류로, 아래의 Unlock 명령만, EXPIRED & LOCKED 라고 되있으면, 패스워드 기간만료로, Unlock 후 비밀번호를 지정해줘야 한다. ALTER USER 사용자명 ACCOUNT UNLOCK; 로 Lock된 사용자를 Unl ock 시킨다 방금 말했다시피, 다시 Lock된 사용자 확인했는데,  Open되지 않고 EXPIRED되어 있다면, alter user 사용자명 identified by 바꿀패스워드;  로 패스워드를 변경하거나 또는 SQL*PLUS 를 재시작하여 Lock를 해제한 계정(사용자명/패스워드)로 로그인 하면 패스워드 변경 창이 뜬다. 추가로 패스워드 Lock 횟수 확인하는 방법은 SELECT U.USERNAME,P.PROFILE, P.RESOURCE_NAME, P.LIMIT  FROM D