티스토리 뷰
데이터 타입과 변수
7.상수 : 두 번 이상 선언 불가
let : 수정 가능
const : 수정 불가능
함수가 아닌 다른 영역(중괄호 영역)에서는 scope로 판단하지 않는다.
for문 안에서 var i는 지역변수 같지만 함수의 scope가 아니기 때문에 영역밖에서도 사용이 가능하다.
예약어() >> 함수가 아님!
var 함수레벨
let 블록레벨(블록={}=바디)
let 키워드는 함수 레벨 스코프가 아닌 블록 레벨 스코프이기 때문에,
중괄호 안에서 선언하면 함수가 아니여도 해당 중괄호가 닫히면 메모리에서 해제된다.
중괄호 안에서 let으로 선언된 변수는 밖에서 사용할 수 없다.
변수 선언할 때 var나 let을 사용하자!
let 자바의 변수와 비슷(중괄호를 벗어나면 사용불가)
const 자바의 final 변수와 비슷
----------------------------------------------------
c언어-함수(어떠한 영역에 갇히지 않음)
java-메소드(어떠한 영역에 갇힘, 클래스 영역 안에서 사용)
phthon-함수,메소드
js-함수,메소드
함수
* 인자(파라미터, parameter) : 매개변수(선언부)
* 인수(아규먼트, argument) : 매개변수에 들어가는 값(사용부, 호출부)
사용할 때 아규먼트를 전달해달라! 보통 arguments 복수로 많이 사용, 값들
함수의 선언 |
function 식별자(args1, args2, ...){ 코드 작성 return 리턴값; } |
- function : 함수 선언 표시 |
- 식별자 : 동사로 작성 |
- parameter : 여러 개 있을 때에는 콤마로 분리하고 자료형을 따로 작성하지 않는다. 생략도 가능하다. |
- return : 생략이 가능하다, 리턴타입은 따로 작성하지 않는다. |
JS에서는 오버로딩을 지원하지 않는다.
JS에서 동일한 식별자로 함수를 여러 번 선언하면, 가장 마지막에 선언한 함수로 결정된다.
위치와 상관없이 선언부가 먼저 인식됨.
---
typescript >> 라이브러리 추가를 따로 해야 함.
변수명": 타입"쓰는 거!
typescript를 사용하고 싶을 때에는 다운로드 후 사용해야 한다.
https://www.typescriptlang.org/download
npm install typescript --save-dev
npm install -g typescript
npm install -g ts-node @types/node
npx tsc
Get-ExecutionPolicy
Set-ExecutionPolicy Unrestricted (관리자 권한으로 실행)
파일 확장자를 .ts로 변경
tsc --init //버그 오류
(npm cache clean --force)
파일 확장자를 .ts로 변경
ts 파일을 js로 변환한다.
tsc 파일명.ts
변환된 js파일을 node로 실행한다.
node 파일명.js
tsc.cmd -v //버전 확인
---
문자열에 있는 includes() 메소드에 조회할 값을 전달하면,
포함되어 있을 때 true, 없을 때에는 false이다.
값이 없을 때 초기값을 설정한다.
false로 취급되는 값이 ||연산자 앞에 들어오면 뒤에 작성된 초기값이 들어가게 된다.
false로 취급되는 값 : "", 0, undefined (조건식에서)
=== : 값과 타입 모두 같아야 true
""안에 숫자가 있으면 자동으로 형변환
---
callback : 함수가 들어올거라는 약속
자바에서 메소드는 저장공간이고 코드의 주소값을 담고 있다.
자바스크립트에서는 함수를 값으로 본다.
자바 스크립트의 함수 > 모듈이라고 부름. 모듈(부품)
맥북 하드웨어 일체형, 모듈화가 아님,
하나하나 분리시키는 작업 > 모듈화
자바 스크립트는 모듈로 분리시켜야 함.
JS에서는 매개변수의 개수에 맞추어 값을 전달할 필요가 없다.
만약 매개변수 개수보다 부족하게 값을 전달하면 값을 못 받은 매개변수에는 undefined가 들어간다.
만약 매개변수 개수보다 넘치게 값을 전달하면 잘린다.
JS에서는 함수를 값으로 취급하기 때문에 매개변수로 전달이 가능하다.
현재 함수에서 나온 결과값을 다른 함수로 전달할 때에는 callback이라는 매개변수명으로 함수를 전달받아 온다.
-----------------------------------------------------------
자바스크립트 전역함수
- eval()
문자열 형태로 수식을 전달받아서 수식을 계산한다.
eval("2*3+4*6") == 30;
- parseInt()
문자열을 정수타입으로 변환한다.
parseInt("32") === 32;
- isNan()
값이 NaN이면 true
NaN이 아니면 false
- isFinite()
값이 NaN이면 false
NaN이 아니면 true
=====================================================================
ES6에서는 클래스를 배워야 하지만 쓸일이 없어서 안 배움.
자바스크립트 객체
객체의 고유한 속성을 프로퍼티(property)라고 부르며, 여러 프로퍼티와 값의 쌍으로 표현된다.
객체가 호출하는 함수는 메소드라고 부른다.(객체 안에서 함수가 선언되어 있으면 메소드임.)
account = {name: '한동석', number: '110-1111-1111', code: '1234'};
왼쪽 : key, property
오른쪽 : 값
account.프로퍼티명
account["프로퍼티명"]
account.deposit = function(){...}; //익명함수
account.deposit(); //사용
자바의 생성자 => 자바스크립트에서는 프로토타입
new 뒤에 나오는 생성자를 자바스크립트에서는 프로토타입이라고 부른다.
프로토타입은 함수로 선언하여 사용한다. 단, 반드시 대문자로 시작해준다.
키값에 "" 있으면 json, 없으면 javascript
프로퍼티에 ""(two quotation)이 있으면 JSON이고,
프로퍼티에 어떠한 따옴표도 없으면 JS Object이다.
'2022 > js,jquery' 카테고리의 다른 글
day06[BOM, jQuery] (0) | 2022.09.21 |
---|---|
day05[첨부파일,배너] (0) | 2022.09.21 |
day04[DOM] (0) | 2022.09.16 |
day03[코어객체,파일입출력] (0) | 2022.09.16 |
day01[about javascript,Node.js설치,변수] (0) | 2022.09.13 |