0%

메모리,참조,키워드,변수,선언,할당,재할당,호이스팅

변수-값을 다룬다.(데이터를 다룬다.)

참조-변수에 저장된 값을 읽어들이는것을 참조라한다.

함수/객체 (변수를 모르면 못함)

10(리터럴)+(연산자)20(리터럴):좌변과 우변의 값 +연산자를 메모리에 저장한다.

메모리셀:1byte짜리 방이 존재한다.1byte단위로 저장
메모리주소:각각 셀마다 주소가있다.
인간에게 유의미한 데이터는 최소 1byte이상

숫자를 기억하여 메모리에 저장한다. 연산을 cpu에서 한다. cpu에서 연산 한 후 이를 메모리에 저장을 한다.
메모리에 저장되는 모든 값은 2진수이다.

1+2 안 쓴다표현식(unuse-expression)? 쓴다는 의미? 메모리 어딘가에 저장함.(10과20) 30이라는 값을 더한이유는 이 값을 ‘사용하겠다’는 의미이다.곧 재사용을 할 수없다는 것이다. 값이 메모리에 저장이 됐지만 주소를 알아야 접근할 수있는데,
위치 안알려줌(잘못 저장하면 문제가 생김)/알려준다고해도 문제가 됨.(같은 곳에 저장될 보장이없다.임의의 공간에 저장이 되기때문이다.) 저장된 데이터를 재사용하기 위해서 프로그래밍 언어는 변수를 제공한다.

따라서 변수는 데이터가 저장되는 곳의 메모리 주소를 기억한다.(반드시 변수에는 하나의 값만 저장할 수 있다.)

변수란 하나의 값을 저장할 수 있는 메모리공간에 붙인 이름 또는 메모리공간 자체를 말한다.

여기서 값이란(하나의값)? 메모리에 들어가는 대상.컴퓨터가 인식할 수있는 값의 종류. 7가지 (숫자 문자열 불리언 undefined null symbol 객체-값의 유형)

자료구조-데이터 구조(여러 개의 값이 들어있는,연관된 데이터의 그룹) ex)객체,배열


자바스크립트 엔진은 변수이름 result (식별자-고유한 이름,일종의 카드 키)을 안다.
키워드-명령어(뒤에 값을 준다.) 자바스크립트에게 내리는 명령
변수에 저장된 값을 읽어들이는 것을 참조라한다.

변수의 이름->할당값/값을 의미해야함
변수의 이름은 저장된 값의 의미를 이해 할 수있는 이름은 가독성을 높여주는 부수효과 .변수이름을 신중하게 정해야한다.

var result=10+20; 각 값10,20 메모리에 저장하고 30이라는 결과를 가져옴(평가)
10,20이라는 값은 필요없는 값-가비지컬렉터에의해 쓰지않는 값이기 때문에 다른값이 들어갈수있게 해준다. 가비지 ㅌ컬렉터는 값을 지우는 것이아니다.

var(키워드) result(변수이름/식별자)=10+20(표현식);
표현식을 변수에 할당(assign,저장,대입)

code-runner(dom api가 없으면 사용해도 괜찮다.)
quokka(command shift p);


식별자(변수이름) -메모리에 있는 값을 구별해서 끄집어낼 수 있는 값./식별자는 어떤 값을 구별하여 식별해낼 수있는 고유한 이름

함수는값이다.함수덩어리 메모리에 그대로 들어감ex)foo();

클래스-객체를 만들어냄 ex)class Bar(){} new Bar();
식별자는 메모리 주소를 알고 있다.
변수,함수,클래스 네이밍있다.

변수선언-변수를 생성한다.
변수란 컴퓨터에서 메모리와 관련있다.

변수선언-변수생성한다(변수이음,메모리공간-매핑된 상황) 자바스크립트 엔진에 변수이름 등록 ,값 저장을 위한 메모리 공간 확보위함

변수선언 var result 변수이름을 자바스크립크 엔진에 등록해 알린다.

변수의 이름은 어디에 저장이 되는 가? 변수이름을 비롯한 모든 식별자는 실행 컨텍스트에 등록이된다. 또한 자바 스크립트 엔진은 실행 컨텍스트를 통해서 식별자와 스코프를 관리한다. 변수이름과 변수값은 실행 컨텍스트내의 key와 value형식으로 등록되어 관리된다.
변수 선언 키워드 사용(var,let,const)

var 키워드를 사용한 변수선언은 선언단계와 초기화 단계가 동시에 일어난다.

변수선언(메모리 공간을 확보하기 위해)=할당1.논리적 선이된후2.할당

기본적 변수는 선언을 하고 할당해야함.

변수를 선언만하고,할당을 하지 않으면 -undefined값이나옴. 값이 정의되지않는다. 변수는 암묵적으로 undefined값을 가진다 .자바스크립트엔진에 부여. 알아서 할당한다 .undefined라는 값으로-우리가 일부로 할당하는 경우는 없다. 자바스크립트엔진이 쓰기위한 값,변수가 선언만되고 할당되지 않았다는것을 알려주기 위함이 크다.-인터프리터 언어는 런타임에 에러가 발생해서 볼 수있기 때문에 최대한 에러가 나지 않게한다.

할당하지 않고 변수선언마저하지 않음 에러를 일으킨다.


변수 호이스팅(중요함)-변수선언이 위로 끌어올려진것처럼 동작한다.

console.log(score);//원래 에러가 나야함.
var score;//변수선언

모든(식별자와 관련있다.)선언문은 먼저 실행한다.
인터프리터가 코드를 한줄한줄 해석하기 전에 쭉 일고 선언문만을 골라서 먼저 실행한다. 이는 코드를 실행하기 전에 평가를 한다고 말한다.-이후 실행될 수있는 환경을 만들어냄.
변수의 선언이 코드가 순차적으로 실행되는 런타임 이전에 먼저 실행된다는 것에 주목하자.

위 끌어올려서 실행된 실행문은 또 실행되지 않는다.
(let,const호이스팅이 되지만 안되는것 처럼 작동한다.이후에 수업할 내용이다.)
위의 내용은 변수 호이스팅의 내용이고,함수 호이스팅이 따로 존재한다.
**이런식으로 코드를 짜지 말아야하는 예시가 될 수있다.->최소한 선언을 하고 참조해라.

왜 호이스팅이 발생하는가?->선언문은 실행될때 가장먼저 골라져서 실행되기대문에 발생한다.
console.log(result);// undefined을 출력한다.
var result=100;(var result;
result=100;)으로 해석될수있다.

선언문과 할당 ,선언문이전에 참조를 하지 말아라.

console.log(result);//undefined.
var result=100;
console.log(result)//100출력


값의 할당-변수 선언은 소스 코드가 순차적으로 실행되기 이전, 즉 런타임 이전에 먼저 실행되지만 값의 할당은 소스 코드가 순차적으로 실행되는 시점인 런타임에 실행된다.**

값의 재할당-이미 할당되어있는 면수에 새로운 값을 또ㄱ디시 할당하는 것을 말한다.
var 키워드로 선언한 변수는 값을 재할당할 수 있따.

원시값(6가지 타입:undefined,null,불리언,문자열,숫자,symbol,)은 값을 변경할 수 없다.리뮤터블(한번 값을 설정하면 바꿀수없다.)

언매니지드/ 매니지드
가비지 컬렉터는 지우는 역할이 아니라 값이 할당될때 다른 값이 들어가지 못하도록 블락한것을 풀어주어 다른 값이 들어갈 수 있도록하는 역할을 한다고 생각하면 쉽다.

힌트는 :변수를 하나를 더만들어서 사용하라.

var x=1;
var y=2;


var z=y;

x=z;
y=x;
console.log(x,y);// 2,1로 출력되도록 값을 바꾸어라.