Javascript 기초

아기코딩단2·2022년 3월 29일
0

코딩언어에는 expression과 statment(구문) 가 존재한다.
절차지향적 프로그래밍(시간 순서대로 하는 것)
~해라 => 구문(제어문, 반복문, 선언문)
모든 변수는 상자다.
()는 실행의 의미

자바스크립트는 언제 나왔는가
태초에 모자이크 브라우저가 있었다.
브라우저에 쓰기 위해서 js를 등장시켜서 js 는 태생적으로 한계를 가질 수 밖에 없었다.

Risk가 큰 코드는 따로 만들어서 실행시켜보고 적용시키는 것이 좋다고 생각함.
인터프리터가 가장 먼저 하는 일은 읽은 식과 문을 구분한다. 타입을 쭉 읽어오고 두번 째에서는 연산자들을 실행시켜준다. 그래서 var에 담긴 변수를 먼저 출력하고 var 를 초기화 하는 경우undefined 가 뜨게된다. 여기서 자스의 호이스팅을 확인할 수 있다.

자스는 느슨한 언어이고, 자바는 엄격한 언어이다.
node.js를 이용해서 백엔드까지 생성해준다.
()는 실행의 의미
브라우저가 생기고 js가 만들어지니 js 는 태생적으로 한계를 가졌었다.
그러나 요즘 웹으로 모든 것이 가능한 상황을 꿈꾸다 보니 브라우저에서 v8만 떼어낸 것을 node.js로 만들었다. js의 타입이 없기 때문에 대용량의 파일을 만들 때 한계가 생기는데 이 한계를 보완하기 위해서 MS와 GOOGLE가 손을 잡고 뒤에 타입을 써주는 typescript를 만들어 냈다.
구글이 js기반으로 dart.js를 만들어 냈다. 이 dart.js를 사용하는 애는 flutter이다.
()는 실행하라는 명령어
언어를 볼 때 인터프리터 형, 컴파일 형이 있는데, 자바는 둘다 해당한다.
인터프리터 형이란 데이터를 받아서 해석하면서 뿌려주는 것을 말한다.
자바는 JVM덕분에 플랫폼에 독립적이다.(os, window 등)
node.js를 사용하게 되면 인터프리터 형식으로 js가 실행된다.
자스의 타입중 var을 사용하게 되면 범위를 무시하는데 let을 사용하면 범위를 엄격히 지킨다. 요즘은 let을 많이 사용하는데 이는 java계열과 같이 따라가기 위해서이다.
ex)
console.log(num)
var num = 10
console.log(num)
이렇게 하게되면 위의 cosole.log 의 경우 undefined 가 뜨고 밑의 코드는 10이라고 잘 나오는 것을 알 수 있다. 그러나 변수 타입을 let을 주게되면 Not a defined 가 뜨게되는데(?이거 안뜨고 ReferenceError: Cannot access 'num' before initialization이라고 뜬다. 이는 참조 오류라는 뜻
) 이는 자스가 두번 읽는 다는 사실을 알 수 있다. 즉 var 의 경우 자스가 한번 읽을 때 위에 var num; 이라고 선언해두고 다시 읽는 다는 사실을 알 수 있다. 즉 let 과 const로 선언한 변수도 호이스팅 대상이지만 var와 달리 호이스팅 시 undefined 로 변수를 초기화 하지는 않는다. 따라서 변수의 초기화를 수행하기 전에 읽는 코드가 먼저 나타나면 예외가 발생한다.

profile
레거시 학살자

0개의 댓글