9일 차에 이어 실시간 강의로 학습을 진행할 예정으로 보아, 9일차에 추가 수정 예정이다.
7일차 2022.09.20 (10:00AM~15:00)
- 실시간 강의로 javascript 복습을 진행하였다.
아래 내용에 이어서, 추가되는 내용은 9일차에 추가적으로 학습한다고 한다.- 전날, 소수의 합 알고리즘을 풀면서 break와 continue 대해서 공부했던 것을 다시 한 번 정리된 설명으로 들으니 이해가 더 빨랐다.
- node.js 기능을 사용해 VSC에서 바로 consle창을 확인 할수 있다는 점도 알게 되어 학습에 요긴하게 사용하고 있다.
- 이전에 알고있던 자바스크립트내용에서, 좀 더 내 지식으로 품고 싶은 내용들을 아래에 정리해 두었다.
primitive 원시 타입
Object 객체 타입
자바스크립트는 data는 따로 방이 만들어지고 주소값만 참조하기 때문에 어떤 형이든 자유롭게 들어 올 수있음
// 0x 16진법
let hex = 0xb1;
console.log(hex, typeof hex); //177 number
//자바스크립트는 숫자를 저장할수있는 메모리값이 고정되어있음. 넘어가면 지수로 변경이됨.
let bigInt = 123232232332322322222222;
console.log(bigInt, typeof bigInt); //1.2323223233232232e+23 number
//만약, 지수로의 변경을 원치않으면 맨뒤에 n을 붙임
let bigInt2 = 123232232332322322222222n;
console.log(bigInt2, typeof bigInt2); //123232232332322322222222n bigint
//다른 알파벳을 붙일 경우에는 숫자형이 아님.
console.log(10 + 3);
: 덧셈 → 13
console.log(10 - 3);
: 뺄셈 → 7
console.log(10 * 3);
: 곱셈 → 30
console.log(10 / 3);
: 몫 → 3.3333333333333335
console.log(10 % 3);
: 나머지 → 1
console.log(10 ** 3);
:거듭제곱 → 1000
console.log(Math.pow(10, 3));
: 거듭제곱 → 1000
console.log(0 / 10);
: 0
console.log(10 / 0);
: infinity
console.log(10 / -0);
: -infinity
console.log(10 / 'string');
: NaN(Not a Number)
console.log('string' == NaN);
: false
typeof ‘string’
: stringtypeof NaN
: numberlet str = '문자열';
console.log(str);
str = '문자열';
console.log(str);
str = `문자열`; //백틱 또한 string 으로 봄
console.log(str);
let test = "'반갑습니다 해당 자료형은'" + str + '입니다.';
// 문자열 연결자 +
// - 를 쓰면 NaN가 됨; string - string = NaN
console.log(test);
// 특수문자 \n 줄바꿈 \t 탭키
test = "'반갑습니다 \n 해당 자료형은 \t '" + str + '입니다.';
// 각각으로 존재하는 문자열을 +로 묶어줌
console.log(test);
// 템플릿 리터럴
test = `"반갑습니다 \n 해당 자료형은' ${str} 입니다."`;
// 백틱을 이용해 하나로 존재하는 문자열
console.log(test);
let isActivated = false; //접속한 상태니?
let isMember = true;
console.log(isMember);
// 거짓 값으로 인식하는 데이터
console.log(!!0);
console.log(!!''); // 빈문자열
console.log(!!null);
console.log(!!undefined);
console.log(!!NaN);
console.log(!!10); // 0을 제외한 모든 숫자 타입 true
console.log(!!-3.14);
console.log(!!'String');
console.log(!![]);
console.log(!!{});
console.log(!!Infinity); // 무한대 = 값을 가짐 = true
typeof null
: ‘object’ 으로 객체 타입임let animal;
console.log(animal); //undefined ; 이게 무슨값인지 알지 못하는 상태
animal = null; // 빈주소값을 의미하는 객체 => null 객체의 주소값 할당
console.log(animal); //null ; animal 쓸건데 아직 그 값을 사용하지않은 상태.
// typeof 키워드
console.log(typeof null); //object
console.log(typeof undefined); //undefined
animal = 'Dog'; // undefined 에서 값이 할당이 됨
console.log(typeof animal);// string
let array = new Array(3); // 비어있는 공간이 3개인 배열의 생성자 함수
console.log(array); //[ <3 empty items> ]
array = new Array(1, 2, 3);
console.log(array); // [ 1, 2, 3 ]
array = Array.of(1, 2, 3, 4, 5); // of 를 사용해 배열을 생성
console.log(array); // [ 1, 2, 3, 4, 5 ]
// 값 추가
let subject = [];
subject[0] = 'javascript';
subject[1] = 'html';
subject[2] = 'css';
subject[5] = 'java';
console.log(subject); //[ 'javascript', 'html', 'css', <2 empty items>, 'java' ]
console.log(subject.length); // 6
// 값 삭제
delete subject[1];
//원하는 배열 인덱스값을 삭제함; undefied으로 변경됨 (값만 삭제되고 메모리방은 empty == undefied)
console.log(subject); //[ 'javascript', <1 empty item>, 'css', <2 empty items>, 'java' ]
서로 연관 있는 여러 종류의 데이터 타입을 한 개로 묶어주기 위해서 Object 타입 사용
object의 heap에 대한 데이터는 고정되지않고 유동적이다 = 동적이다
객체를 만드는법 2가지
let obj1 = {}; // 객체 리터럴 - 비어있지만 true 값을 가짐
let obj2 = new Object(); // 생성자 함수
- 식별자 = { key : value } ;
key을 통해서 value 값을 받아 옴
- 식별자.key
⇒ value 값
- 식별자[’key’]
⇒ value 값
- key : string, Number, Symbol
- value : 원시데이터 타입, 객체, 함수
let dog = {
name: '멍멍이',
age: 5,
ownerName: 'yeonmi',
};
// 값 접근 1
dog.isPet = true;
// dog로 가서 isPet이라는 키가 있는지 확인 -> 있으면 수정 / 없으면 추가함
let rabbit = {
name: '껑충이',
age: 1,
ownerName: null,
};
// 값 접근 2
rabbit['isPet'] = false;
객체의 속성 값 = 프로퍼티(property)
//깊은 복사
let myName = '김원값';
let yourName = myName; // myName 값을 복사해옴
console.log('myName=', myName); //'김원값'
console.log('yourName=', yourName);//'김원값'
yourName = '김복사'; // 새로운 데이터 생성후, 새로운 데이터로 다시 주소를 참조함
console.log('myName=', myName); //'김원값' ; 변경 되지 않음
console.log('yourName=', yourName); //'김복사'
//얕은 복사 ( == 주속 복사)
//기존의 복사한 값에도 영향을 미침
let arr = [1,2,3,4];
let newArr = arr;
arr[2] = 300;
console.log('arr= ', arr); // 'arr= ' [ 1, 2, 300, 4 ]
console.log('newArr= ', newArr); //'newArr= ' [ 1, 2, 300, 4 ]
let cat = {
name: 'nabi',
};
console.log('복사 전 =', cat); //'복사 전 =' { name: 'nabi' }
let dog = cat;
dog.name = '멍멍이';
console.log('복사 후 cat=', cat); //'복사 후 cat=' { name: '멍멍이' }
console.log('복사 후 dog=', dog); //'복사 후 dog=' { name: '멍멍이' }
조건 ? 조건이 참일 경우 실행 : 조건이 거짓일 경우 실행
Boolean() ? 선택문1 : 선택문2
let isPass = false;
let msg1 = isPass == false ? '합격' : '불합격';
console.log(msg1); // 합격
let isPass2 = false;
let msg2 = isPass2 ? '불합격' : '합격';
console.log(msg2); //합격
반복문 코드 블록 내부에서만 작동함
if(종료조건){break;}
로 사용function 함수 이름 () {code};
function () {code} ;
let 변수 이름 = function () {code};
let 변수 이름 = () => {code};
function 키워드 생략 후, () 소괄호 뒤에 = >를 붙임
매개변수가 한 개라면 () 소괄호 생략
함수의 유일한 내용이 한 줄 이면 {} 중괄호 생략
let multiply = (a, b) => {
return a * b;
};
console.log(multiply(10, 20)); //200
let minus = (a, b) => a - b;
console.log(minus(10, 20)); // -10
let 변수 이름 = new 함수 이름 ();
객체를 생성할 때 호출하는 함수, new라는 키워드 사용 함
사진 출처
https://www.site24x7.com/learn/java/heap-and-stack-memory-management.html
https://velog.io/@jewon119/TIL03.-JavaScript-조건문을-사용하는-이유-0vsifkzf
엘리스코딩