211009_JS 기초문법(1)
(1) 변수와 상수
변수 - 변경 가능한 값을 저장하기 위한 기억 공간
키워드 : let
상수 - 변경 불가능한 값을 저장하기 위한 기억 공간, 값 재할당하면 에러가 난다 , 선언과 동시에 값을 초기화 해야한다
키워드 : const
선언 후 할당
let hi;
hi = "hello";
한 줄에 여러 변수 선언과 초기화
let name = "john", age = 13 , msg = 'hello';
상수는 보통 대문자로 표기
Const TESTCASE = 5;
호이스팅(Hosting)
- 코드에 선언된 변수 및 함수를 유효한 범위의 코드 상단으로 끌어 올리는 작업
- var 의 변수/함수 선언만 위로 올려지고 , 할당은 올려지지 않음
- let/const 변수 선언과 함수 표현식에는 호이스팅이 발생하지 않음
그렇기 떄문에 let, conste 사용만을 권장
자료형
목적에 따라 특별한 성질이나 정해진 범주를 가지고 있는 데이터의 종류
typeof
- 자료형을 반환하는 연산자
- 연산자인 typeof x와 함수인 typeof(x)로 문법지원
console.log(typeof str);
console.log(typeof(str));
null
- 값이 비어있다는 의미로 표현되는 자료형
- 존재하지 않는 (nothing) , 비어있는(empty), 알수없는(unknown)
- 변수가 실제 비어있는지를 확인할 때 많이 사용
undefiend
- 값이 할당되어 있지 않은 상태를 나타낼 때 사용되는 자료형
- 변수 선언 후 초기화 하지 않는다면, undefined가 자동으로 할당
number
- 숫자형 정수, 부동소수점 숫자를 표현하는 자료형
- number와 관련된 연산은 사칙연산(+,-,*,/)가 대표적
- number에 일반적인 숫자 외에 infinity, -infinity, NaN(Not a Number)같은 특수 숫자 갑싱 표함
- 더 큰 정수를 다루고 싶다면 bigint 자료형 사용하기
ex) NaN의 대표적인 예
let num1 = 123.0;
console.log(num1/"hello"); //NAN
- 사칙연산에 대한 소수처리 하는 방법 toFixed
ex) 사용 방법
소수점 3자리만 출력
let num1 = 123.0;
let num2 = 123.456;
console.log(num1- num2).toFixed(3));
string
-
자바 스크립트에서 문자열은 3가지 종류의 따옴표로 표현 가능
-
큰 따옴표 : "hello"
-
작은 따옴표 : 'hello'
-
역 따옴표 (백틱, backtick):
Hello
문자열 안에 변수를 넣을 수 있는 방법
let num = 3;
let str_3 = `hello_${num}`;
console.log(str_1); // output:hello_3
객체타입 (object)
-
원시 자료형을 포함하거나 복잡한 개체를 표현할수있는 자료형
-
() 혹은 ({}) 를 통해 생성
-
Key : value 접근은 object.key 형태 표현
배열 형태로 가능 user[name] -
실제 변수에는 object가 있는 메모리 주소가 있는 것
let user {
name : "john",
age : 27,
};
console.log(user); //{name: "john",age:27}
//삭제
delete user.age;
// 추가
user.weight : 50 ;
객체 복사의 문제점
-
object 값을 복사할 때는 대상 전체가 아닌 object 내 주소 값만 복사되는 문제 발생 (같은 주소 공간을 가르키게되고
-
가리키는 대상 전체를 복사하는 방법은 얕은복사, 깊은 복사를 통해 가능
-
객체를 다룰 때는 주소값을 가지고 있다는 것을 인지하자
-
객체 내 또 다른 객체가 있다면 복사되지 않음
얕은 복사 -1 : for 문 사용
let admin = {};
for(let key of user){
admin[key]: user[key];
}
*얕은 복사 -2 : assign**
- 빈 객체에 user 객체를 머지해서 admin에 넣어줘라
let admin = Obeject.assign({},user);
얕은 복사 -3: 스프레드 연산자
- user내의 모든 필드값을 admin에 넣어라
새로운 공간을 만들어서 user 값을 넣어주고 이 주소를 admin이 가지는 것이다
let admin = {...user};
깊은 복사 : json 객체를 이용한 깊은 복사, stringfy 는 객체를 문자열로 변환히는데 이때 원본 객체와의 참조가 끊김
let admin_json = JSON.parse(JSON.stringfy(user));
형변환
-
자바스크립트는 느슨한 타입언어 동적 타입 언어로 변수의 자료형을 명시적으로 선언할 필요가 없는 언어
-
연산자로인한 계산이나 변수에 전달되는 값은 자동으로 암묵적 형 변환 수행
-
강제적 형 변환을 위해서는 자료형 함수를 이용해 명시적 형 변환을 수행
console.log(string(123));// 123
console.log(string(NaA));// NaN
형변환 (Number)
-
Number는 정수와 실수를 모두 포함하는 자료 형 변환이므로 , 정수 혹은 실수의 명시적 변환은 parse 함수 사용
-
정수변환 : parseInt(피연산자) , 실수변환:parseFloat(피연산자)
console.log(Number("")); // 0
console.log(Number("hello"))//NaN
console.log(Number(undefined)); // NaN
console.log(Number(NaN))// 0
console.log(ParseINT(123.123)); // 123
형 변환(Boolean)
console.log(Boolean(NaN)); //false
console.log(Boolean(Null));//fale
console.log(Boolean(undefined));//false
산술대입 연산자
- 프로그램에서 데이터를 처리하여 결과를 산출할 목적으로 사용되는 문자
몫만 구하고 싶을 때 사용하는 연산자
console.log(parseInt(31/10)); //output : 3
나머지 연산자
console.log( 31%10); //output : 1
거듭제곱 연산자
- 다른 언어에는 없지만 자바스크립트에만 존재하는 연산자
console.log(2 **3); // output: 8
문자열 연결도 산술 연산자로 가능
let str1= "hello";
let str2= "world";
let str3 = str1+ str2 ;
console.log(str3); //output: helloworld
복합 대입 연산자
- 산술 연산자로 피연산자를 계산해 결과값을 한번에 대입시켜주는 연산자
let num = 10;
let result_3,result_4, result_5;
result_3= reulst_4 = result_5= 31;
비교 연산자
-
좌향과 우향의 피연산자를 비교한 다음 결과값을 논리적 자료형으로 반환하는 연산자
-
== 은 단순 값의 같음을 비교하는 동등 비교 (값에대한 케스팅 (형변환)이 이루어져서 된다
-
=== 는 자료형까지 같음을 판단하는 일치 비교 연산자 (캐스팅 안되고 비교됨)
console.log( false !=123 ) ;//output: true 123은 형변환되면 true
console.log( 5==='5'); //output: false
console.log( 5!=='5'); // output:true
Scope
-
변수 혹은 상수에 접근할 수 있는 범위
-
모듈/ 함수 내 코드에서 동일한 변수 사용시 간섭을 줄이는 용도로 사용
-
scope는 Global scope와 Local Scope의 타입으로 구분
Global scope : 전역에 선언되어 어디에서도 접근 가능
Local Scope : 특정 지역에 선언되어 , 해당 지역 내에서만 접근 가능
Author And Source
이 문제에 관하여(211009_JS 기초문법(1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@akk0504/211009JS-기초문법1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)