전체 글 103

7-3. 실행 컨텍스트

1. 소스코드의 평가와 실행 도입 및 용어정리 1) 평가와 실행 도입 ECMAScript에서는 소스코드를 4가지의 타입으로 분류한다 전역 코드 전역에 존재한다. 함수 코드 함수 내부에 존재하는 소스코드이다. eval 코드 빌트인 전역 함수인 eval 함수에 인수로 전달하여 실행되는 소스코드 모듈 코드 모듈 내부에 존재하는 소스코드이다. 자바스크립트에서 모든 소스코드는 '평가'과정을 거친 뒤 '실행' (런타임) 과정을 거치게 된다. '평가' 과정은 실행에 앞서 코드를 실행하기 위한 준비를 하는 단계이며 '실행' 단계는 실제 런타임을 말한다. 소스코드에서 '평가' 과정에서는 어떤 작업이 일어나며 '실행' 과정에서는 어떤 작업이 일어나는지 설명한다. 2) 실행 컨텍스트 소스 코드가 실행되면 스코프, 식별자, ..

JavaScript 2022.01.30

7-2. 실행 컨텍스트와 클로저의 선행 개념2 : 호이스팅

호이스팅의 개념을 정리하는데 있어 js코드의 '평가'와 '실행' 과정을 알아야한다. 이 내용은 실행 컨텍스트 절 에서 자세히 다룰거며 지금은 호이스팅의 개념을 정리하는데 단순히 '평가'와 '실행' 용어만 사용하여 호이스팅을 정리하는데 중점을 두어 글을 작성했다. 1. var 호이스팅 js코드는 '평가'와 '실행' 과정을 거치게 된다. 이 두 과정에서 변수의 호이스팅이라는 현상이 발생한다. var 키워드로 선언된 var a= 10; 이란 코드를 보면 코드의 평가 과정에서는 a가 등록되고 값으로 undefind가 할당된다. 그리고 '실행' 과정에서 비로서 a에 10이라는 값이 할당된다. console.log(a); var a = 10; 위 코드를 보면 '평가' 과정에서는 console.log()문이 실행되지..

JavaScript 2022.01.30

7-1. 실행 컨텍스트와 클로저의 선행 개념1 : 스코프의 개념 (feat 렉시컬 스코프)

더보기 1. 스코프란? 2. 스코프의 종류 3. 함수 레벨 스코프 vs 블록 레벨 스코프 이 절에서는 궁극적으로 정리할 내용인 실행 컨텍스트와 클로저를 이해하는데 있어 선행되는 개념인 스코프를 정리하였다. 실행 컨텍스트와 클로저의 개념을 이해하는데 있어 '스코프' , '함수 레벨 스코프', '블록 레벨 스코프', '렉시컬 스코프'와 같은 용어들이 계속해서 사용될건데 이런 용어적인 측면에서 막힘이 없게 하기 위해 스코프라는 큰 주제로 내용들을 단순히 정리한 글이다. 따라서 스코프의 정말 심도 깊은(메모리 관점..)내용을 정리한 글이 아니다 1. 스코의 정의 변수 이름, 함수 이름, 클래스 이름 등 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이..

JavaScript 2022.01.30

7. 클래스 탐구

1. 내가 보려고 정리한 내용 - 패키지에는 .java 파일을 만들 수 있다. 그리고 .java 파일안에서는 여러 개의 클래스를 선언 할 수 있는데 public 클래스는 .java파일 명으로 단 하나 만들 수 있다. - 메인함수가 포함될 클래스는 꼭 public클래스에서 선언되야한다. - 패캐지에는 여러 개의 .java파일이 존재 하는데 각 파일에는 public 클래스가 하나씩 존재한다 즉 파일 개수만 큼 존재한다. - 한 패키지에서는 클래스들을 서로 공유 할 수 있다. - 다른 패키지에 각각 클래스가 존재하는 상황: 한 패키지의 .java파일의 클래스에서 다른 패키지의 선언된 클래스를 사용할 시 import선언을 통해 패키지를 선언해 주어야 한다. import 상위패키지.하위패키지.클래스(.*) pub..

Java 2022.01.20

6. 클래스 정리3 : 패키지와 imoprt

1. 패키지 정리 패키지에는 .java 파일을 만들 수 있다. .java 파일에는 여러 개의 클래스를 선언 할 수 있는데 public 클래스는 .java파일 명으로 단 하나 만들 수 있다. (관례적으로 한 파일당 한 클래스이다.) 실행클래스는 꼭 public클래스에서 선언되어야 한다. 패캐지에는 여러 개의 .java파일이 존재 하는데 각 파일에는 public 클래스가 하나씩 존재한다 즉 파일 개수만 큼 존재한다. 같은 패키지에서는 클래스들을 서로 공유 할 수 있다. 한 클래스에서 다른 클래스를 사용하려면 클래스 변수를 선언해 객체를 생성하여 클래스, 클래스 내부의 함수를 사용할 수 있다. 이때는 public 키워드가 무시됨 그냥 class *{} 이렇게 선언된 클래스도 객체 생성 후 마음껏 사용할 수 있..

Java 2022.01.20

5. 클래스 정리2 : final, 접근 제한자,

1. fiinal필드와 상수, final 메소드, final 클래스, final 지역변수 1) final 필드 final 키워드는 인스턴스 필드를 생성시 바로 값을 할당해 다시는 못바꾸게 하는 방법과 final 인스턴스 필드를 값을주지 않고 선언한 후 생성자를 통해 딱 한번 초기화 할 수 있다. 2) 상수 Static final는 정적 필드를 생성시 값을 주어 다시는 못바꾸게 하는 방법과 파이널 정적 필드를 값을 주지 않고 선언 후 정적 블록을 통해 딱 한번 초가화 할 수 있다. 이는 상수를 선언하는 방법으로 사용된다. 3) final 메소드 - final 메소드는 상속은 되나 자식 클래스에서 재정의할 수 없는 메소드이다. 4) final 클래스 - final 클래스는 상속할 수 없는 클래스 이다. 5)..

Java 2022.01.20

4. 클래스 정리 1 : JVM 메모리 사용 영역, class 맴버 정리(Instance, static 맴버), overloading

1. JVM의 메모리 사용 영역 JVM이 시작되면 즉 .class 파일을 실행하게 되면 OS에서 할당받은 메모리 영역을 아래와 같이 생성하게 된다. 1) Method Area 클래스들을 클래스 로더로 읽어서 Method Area에 클래스 별로 저장한다. Method Area는 JVM이 시작되면 생성되며 모든 스레드가 공유하게 된다. 2) Heap 객체, 참조 타입(배열) 등이 저장되는 공간으로 Call Stack에서 Heap 영역의 객체를 참조할 수 있고 Heap 영역에 서로 다른 객체들간에 참조가 이루어지 수 있다. 3) Call Stack(JVM Stack) 이 영역에서는 Thread별로 하나의 Call Stack이 존재한다. 프로그램에서 작업 스레드를 별도로 추가하지 않는다면 main thread에..

Java 2022.01.20

6. AJAX 프로그래밍 기법(Asynchronous JavaScript and XML)

1. 기존의 node와 client의 동작 방식 node로 구현된 서버와 localhost로 구성된 웹브라우저가 있다. 기본적인 동작 방식을 설명하면 client 측에서 url의 변경을 통해 node로 url을 전송하게 된다. 이때 전송 방식으로는 크게 get방식과 post 방식을 알면되는데 get 방식은 url에 쿼리로 데이터를 담아 서버로 전송하는 것이고 post 방식은 데이터(payload)를 일종의 바구니(?)에 담아 서버로 전송하는 방식이다. 서버와 클라이언트의 동작 방식을 도식도로 보면 url을 변경함으로써 해당 url을 서버에서 catch하고 그 처리 결과로 웹 파일을 다시 client로 전송하게 된다. 그럼 client 측에서는 전송 받은 웹 파일을 다시 랜더링하게 된다. 이러한 방식의 단..

JavaScript 2022.01.18

3. 배열을 활용한 문제 만들기

1-1. 프로그램 설명 사용자가 영어 단어를 입력한다. 입력 시 대 소문자 모두 입력 가능하다. 입력 된 단어에서 가장 많이 사용된 알파벳을 출력해줍니다. 가장 많이 사용된 알파벳이 여러 개일 경우 그 알파벳 모두를 출력해준다. c언어에서는 배열의 크기를 지정할 때 변수로 지정할 수 없다. 하지만 자바에서는 변수를 배열의 크기로 선언 할 수 있다. 그리고 자바의 2차원 배열에선 [2][] 이렇게 앞에 배열 크기만 선언 해주면 뒤의 배열 크기는 요소를 넣을 때 그 크기가 동적으로 정해진다. 1-2. 코드 package project1; import java.util.Scanner; public class Mainclass { public static void main(String[] args) { Scan..

Java 2022.01.17

3. 1,2 차원 배열 선언 문법

1. 1차원 배열 선언 방법 방법1) int[] a; a=new int[3]; a=new int[] {1,2,3}; 배열 길이를 모르는채로 배열을 선언한다 -> 배열의 크기를 지정한다 -> 배열에 요소를 할당한다. 방법2) int[] b=new int[3]; b=new int[] {1,2,3}; //또는 b[0] = 1; b[1] = 2; b[2] = 3; 배열을 생성할 떄 배열의 크기를 할당한다 -> 배열에 요소를 할당한다. 방법3) int[] c= {1,2,3}; //정석 처음 배열을 선언할 때 요소를 바로 삽입한다. ->크기가 요소의 크기만큼 자동으로 할당됨 방법4) int[] a=new int[]{1,2,3}; 처음 배열 선언시 요소를 바로 삽입하며 new연산자를 통해 요소를 할당한다. 2. 2차..

Java 2022.01.17