배열과 마찬가지로 자바스크립트 객체 역시 컨테이너지만, 크게보면 다음 두 가지 측면에서 배열과 다릅니다. 배열은 값을 가지며 각 값에는 숫자형 인덱스가 있습니다. 객체는 프로퍼티를 가지며 각 프로퍼티에는 문자열 이나 심볼 인덱스가 있습니다. 배열에는 순서가 있습니다. 하지만 객체에는 그런 순서가 보장되지 않습니다. obj.a가 obj.b보다 앞에 있다고 말할 수는 없습니다. 객체를 순회하기 좋은 루프중에 for...in등이 있는데 주의할 점은 일반적인 배열에서는 for루프나 forEach를 사용하는게 더 유용합니다. Object.keys 객체에서 나열 가능한 문자열 프로퍼티를 배열로 반환합니다. 예를 들어 객체에서 x로 시작하는 프로퍼티를 모두 가져온다면 다음과 같이 할 수 있습니다. const o = ..

배열의 기초 배열은 객체와 달리 본질에서 순서가 있는 데이터 집합이며 0으로 시작하는 숫자형 인덱스를 사용합니다. 자바스크립트의 배열은 요소가 모두 같은 타입일 필요는 없습니다. 배열안에 다른 배열이나 객체도 담을 수 있음 배열 리터럴은 대괄호를 만들고, 배열 요소에 인덱스로 접근할 때도 대괄호를 사용합니다. 모든 배열에는 요소가 몇 개 있는지 나타내는 length 프로퍼티가 있습니다. 배열에 배열 길이보다 큰 인덱스를 사용해서 요소를 할당하면 배열은 자동으로 그 인덱스에 맞게 늘어나며, 빈 자리는 undefined로 채워집니다. Array생성자를 써서 배열을 만들 수 있지만 그렇게 해야하는 경우는 별로 없습니다. 위 내용을 숙지하면 자바스크립트의 배열을 더 자유롭게 다를 수 있을 것이다. 배열 요소 조..
변수 숨김 { //외부블록 let x = 'blue'; console.log(x); { //내부 블록 let x = 3; console.log(x); } console.log(x); } 내부 블록의 x는 외부 블록에서 정의한 x와는 이름만 같을 뿐 다른 변수이므로 외부 스코프의 x를 숨기는 효과가 있습니다. 여기서 이해해야 할 중요한 점은, 실행 흐름이 내부 블록에 들어가 새 변수 x를 정의하는 순간, 두 변수가 모두 스코프안에 있다는 겁니다. 변수의 이름이 같으므로 외부 스코프에 있는 변수에 접근할 방법이 없습니다. 클로저 함수가 특정 스코프에 접근할 수 있도록 의도적으로 그 스코프에서 정의하는 경우 스코프를 함수 주변으로 좁히는 것. let globalFunc; //정의되지 않은 전역 함수 { let..

자바스크립트에서의 함수 자바스크립트에서는 함수도 객체입니다. 따라서 다른 객체와 마찬가지로 넘기거나 할당 할 수 있습니다. 함수 호출과 참조의 차이를 이해하는 것이 중요합니다. 함수 식별자 뒤에 괄호를 쓰면 자바스크립트는 함수를 호출하려 한다고 이해하고, 함수 바디를 실행합니다. 그리고 함수를 호출한 표현식은 반환값이 됩니다. 괄호를 쓰지 않으면 다른 값과 마찬가지로 함수를 참조하는 것이며 그 함수는 실행되지 않습니다. function getGreeting() { return "Hello World"; } getGreeting();//"Hello World" getGreeting;//function getGreeting() 함수를 호출하지 않고 다른 값과 마찬가지로 참조하기만 할 수 있다는 특징은 자바스..
단항 부정, 단항 플러스 산술 연산자는 대부분 알고 있는데 단항 부정과 단항 플러스는 다소 생소할 것이다. 별거 아니지만 자바스크립트에서 사용될 수 있는 연산자다. 단항 부정 -x //x의 부호를 바꿀 수 있다. x가 5였다면 -5로 바꿔준다. 단항 플러스 +x //x가 숫자가 아니면 숫자로 변환을 시도한다. const s ="5"; const y = 3 + +s; y => 8 //여기서 단항플러스가 없었다면 문자열병합을 시도하여 "35"가 되었을 것 비교연산자 === 일치함, == 동등함 ===은 같은 객체 or (같은 타입 and 같은 값)으로 이루어야 일치하게 나옵니다. == 동등함은 자료형과는 상관없이 값만 같으면 됩니다. 33 == "33"이 true가 나오기 때문에 여러가지 문제를 야기시킬 수..

for...in for..in문은 자바에서도 자주 쓰이는 문법이다. 객체를 좀더 쉽게 다루기 위해 생겨난 제어문으로 사용법은 아래와 같다. const player = {name:'Thomas', rank:'Midshipman', age:25}; for(let prop in player){ if(!player.hasOwnProperty(prop)) continue; console.log(prop+ ':' + player[prop]); } player 변수를 넣고 돌리면 key값 들을 순회하는 것이다. 값을 뽑으려면 객체[key]로 뽑아야한다. 4번째 줄은 에러가 생길 수 있기 때문에 예외처리를 해준 것이다. for...of 이 문법은 ES6에서 새로 생긴 반복문이며 컬렉션의 요소에 루프를 실행하는 다른 방..
소량의 데이터를 칠 경우 그냥 UPDATE를 하면 되겠지만 데이터가 1만, 10만건이 되었을 경우 한 트랜젝션에 그 많은 작업을 물리기엔 시간이 너무 오래 소요된다. 그래서 이렇게 대량의 데이터를 UPDATE할 경우 100건이나 1000건씩 나눠서 트랜잭션을 쪼개는게 더 효율적이다. 이 방법은 프로시저를 이용하여 while문을 쓸 것이다. DECLARE @WHERE_STR VARCHAR(1000); SELECT @WHERE_STR = SELECT_NAME FROM A WHERE FORM_TYPE = 'TEST' WHILE 1=1 BEGIN UPDATE TOP(1000) TARGET_TABLE SET SELECT_CD = 'CHANGE TXT ' WHERE SELECT_CD = @WHERE_STR IF @..
SP(Stored Procedure)란? 스토어드 프로시저란 DB 내부에 저장된 일련의 SQL 명령문들을 하나의 함수처럼 실행하기 위한 쿼리의 집합 스토어드 프로시져는 뷰와 같이 SQL문 덩어리로 되어 있고 비슷하지만 활용도는 차이가 있다. 우선 매개변수의 사용으로 사용자에게서 변수값을 받을 수도 있고 또 그 값을 output으로 밖으로 되돌려줄수도 있다. 또한 일반적인 쿼리와는 좀 다른 처리 방식을 가진다. 프로시져 생성과 반복 1) 만들 때 1. 구문분석(Parsing) : 키워드를 분리하고 문법검사를 한다. 2. 표준화 : 각 object의 이름을 확인한다. 3. 보안점검 : 저장 프로시져를 만들 수 있는 권한이 있는지 검사한다. 4. 결과는 syscomments와 sysobjects에 저장한다. ..