전 팀원분께 좋은 정보를 얻었다..
javascript 문법종합반 1주차
// 변수를 선언할 수 있는 3가지 방법 : var, let, const
// 1.var
// 똑같은 변수명으로 할당 가능하다. 가장 최근에 할당한 것을 출력
// 재할당 가능
var myVar = "hello world";
var myVar = "test1";
console.log(myVar);
// 2. let
// 재할당 가능
let myLet = "hello world2";
console.log(myLet);
// 3.const
const myConst = "hello world3";
console.log(myConst);
// 데이터타입
// 터미널에서 실행될 때 데이터타입이 결정된다
// 1. 숫자
// 1-1 정수
let num1 = 10;
console.log(num1)
console.log(typeof num1)
// 1-2 실수(float)
let num2 = 3.14;
console.log(num2)
console.log(typeof num2)
// 1-3 지수(exp)
let num3 = 2.5e5; // 2.5 * 10^5
console.log(num3)
console.log(typeof num3)
// 1-4
// NaN = Not a number
let num4 = "hello"/ 2;
console.log(num4);
// 1-5 Infinity
let num5 = 1 / 0;
console.log(num5);
console.log(typeof num5);
// 1-5 Infinity
let num6 = -1 / 0;
console.log(num6);
console.log(typeof num6);
// 2. 문자 : string
// ' ' = " "
let str = "hello world";
// console.log(str);
// console.log(typeof str);
// 2-1 문자열 길이 확인하기
//console.log(str.length)
// 2-2 문자열 결합하기
let str1 = "hello";
let str2 = " world";
let result = str1.concat(str2);
console.log(result);
// 2-3 문자열 자르기
let str3 = "hello, world";
console.log(str3.substr(7, 5));
console.log(str3.slice(7, 9));
// 2-4 문자열 검색
let str4 = "hello, world";
console.log(str4.search(","));
// 2-5 문자열 대체
let str5 = "hello, world";
let result01 = str5.replace("world", "JavaScript");
console.log(result01);
// 2-6 문자열 분할
let str6 = "apple, banana, kiwi";
let result02 = str6.split(",");
console.log(result02);
// Boolean
// true(참) false(거짓)
let bool1 = true;
let bool2 = false;
console.log(bool1);
console.log(typeof bool1);
console.log(bool2);
console.log(typeof bool2);
// null 과 undefine은 다르다 null은 명시적으로 지정한 것
// object(객체) : key = value pair
let person = {
name: 'choi',
age: 21,
isMarried: false
};
// array(배열) : 여러 개의 데이터를 순서대로 저장하는 데이터 타입
let number = [1, 2, 3, 4, 5]; //각각의 인덱스를 가지고 있다
let fruits = ['apple', 'banana', 'orange'];
// 형 변환
// 명시적 형 변환, 암시적 형 변환
// 1. 암시적
// 1-1 문자열
let result = 1+'2';
console.log(result);
console.log(typeof result);// result = 12, string
let result2 = "1" + true
console.log(result2);
console.log(typeof result2);// result = 1true, string
// 1-2 숫자
let result3 = 1 - '2';
console.log(result3)
console.log(typeof result3)// result = -1, number
let result4 = '3' * '2';
console.log(result4)
console.log(typeof result4)// result = 6, number
// + 이외에 연산자들은 문자열이어도 숫자취급
// 2. 명시적 형 변환
// 2-1 boolean
console.log(Boolean(0));
console.log(Boolean(''));
console.log(Boolean(null));
console.log(Boolean(undefined));
console.log(Boolean(NaN));
console.log("--------------------");
console.log(Boolean(false));
console.log(Boolean('false'));// 문자열이기에 true
console.log(Boolean({}));// 객체는 그냥 true
// 2-2 문자열
let result5 = String(123);
console.log(result5);
console.log(typeof result5)
let result6 = String(true);
console.log(result6);
console.log(typeof result6)
let result7 = String(false);
console.log(result7);
console.log(typeof result7)
let result8 = String(null);
console.log(result8);
console.log(typeof result8)
let result9 = String(undefined);
console.log(result9);
console.log(typeof result9) //모두 문자열로 바뀜
// 2-3 number
let result10 = Number('123');
console.log(result10);
console.log(typeof result10)
// 1. 산술연산자(+, -, *, /, %)
// 형 변환 시 + 빼고는 number
// 1-1 덧셈 연산자
// 1-2 뺄셈 연산자
// 1-3 곱셈 연산자
// 1-4 나누기 연산자
// 1-5 나머지 연산자
// 2. 할당 연산자(assignment)
// 2-1 등호 연산자(=)
let x = 10;
// 2-2 더하기 등호 연산자(+=)
x += 8;
// 2-3 빼기 등호 연산자(-=)
x -= 9;
// 2-4 곱하기 등호 연산자(*=)
// 2-5 나누기 등호 연산자(/=)
// // 3. 비교 연산자(--> true 또는 false를 변환하는 연산자)
// // 3-1 일치 연산자(===)
// // 타입까지 일치해야 함
console.log(2 === 2); // t
console.log('2' === 2); // f
// // 3-2 불일치 연산자(!==)
// // 타입까지 일치해야 함
console.log(2 !== 2); //f
console.log('2' !== 2); //t
// 4. 비교연산자
// 4-1 작다(<) 작거나같다(<=)
// 4-2 크다(>) 크거나같다(>=)
// 5. 논리 연산자
// 5-1 논리곱 (AND)
console.log(true && true); //t
console.log(true && false); //f
console.log(false && true); //f
console.log(false && false); //f
// // 5-2 논리합 (OR)
console.log(true || true); //t
console.log(true || false); //t
console.log(false || true); //t
console.log(false || false); //f
// // 5-3 논리부정 !
console.log('---------');
console.log(!true);
let a = true;
console.log(!a);
// 6. 삼항연산자
let y = 10;
let result = x > 20 ? '성인입니다':'청소년입니다';
console.log(result)
// 7. 타입연산자 (typeof)
// 함수 = function(기능)
// input, output 존재
// function add (매개변수){
// // 실행할 로직
// }
// 1. 함수 선언문
function add(x, y) {
return x + y;
}
// 2. 함수 표현식
let add2 = function (x, y) {
return x + y;
}
// 3. 함수 사용
let functionresult = add(2,3);
console.log(functionresult);
// 스코프, 전역변수, 지역변수, 화살표함수
let x = 30; // 전역변수
function exam(x,y){
let z = 20;
return z; // 지역변수
}
console.log(x);
// 1. 화살표 함수
// ES6 신 문법
// 기존 함수를 정의하던 방법보다 편하다
// 1-1 기본적인 화살표 함수
let arrowFunc = (x, y) => {
return x + y;
}
// 1-2 한줄로 (중괄호 안이 한 줄일 때만 리턴 생략가능)
let arrowFunc2 = (x, y) => x + y;
function testFunc(x) {
return x;
}
// 화살표 함수로
let arrowFunc3 = x => x;
// 조건문(if, else if, else, switch)
// // 1. if문
// // 1-1
// if (조건) {
// //true일 경우 main logic이 실행
// }
// // 1-2
let y = "hello world!";
if (y.length >= 5) {
console.log(y.length)
}
// 2. if ~ else 문
if (x > 0) {
//main logic #1
}
else {
//main logic #2
}
let x = -4;
// 2-1 if ~ else if ~ else 문
if (x > 0) {
console.log("1");
}
else if (x > -5) {
console.log("2");
}
else {
console.log("3");
}
// 3. switch
// 변수의 값에 따라 여러 개의 case 중 하나를 ㅓㅅㄴ택
// default
let fruits = '사과';
switch (fruits) {
case "사과":
console.log("사과입니다")
break;
case "키위":
console.log("키위입니다")
break;
case "바나나":
console.log("바나나입니다")
break;
default:
console.log("잘 모르겠습니다")
break;
}
// 조건문의 중첩
let age = 20;
let gender = "여성";
if (age >= 20) {
if (gender === "여성")
console.log("성인 여성입니다")
else
console.log("성인 남성입니다")
}
else
console.log("성인이 아닙니다")
// 조건부 실행
let x = 10;
// and 조건 &&
x > 0 && console.log("x는 양수입니다")
// or조건 (||)
// 삼항 연산자와 단축평가
let y;
let z = y || 20; // y or 20이 할당 y가 미지정이니 20출력
console.log(z);
// falsy한 값, truthy한 값
if (""){
//falsy한 값입니다
}
// 객체
// 1. 객체 생성 방법
// 1-1 기본
let person = {
name: "이승준",
age: 27,
gender: "M",
hobby: ['헬스', '당구', '서핑', '여행', '요리']
}
// 1-2 생성자 함수를 이용한 객체 생성 방법
// 나중에 다시
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
let person1 = new Person("서지희", 26, "F");
let person2 = new Person("원욱재", 26, "M");
// 2. 접근하는 방법
console.log(person.hobby[1])
console.log("1", person1)
console.log("2", person2)
// 3. 객체 메소드(객체가 가진 여러가지 기능 : Object.~~)
// 3-1 Object.key() : key를 가져오는 메소드
let keys = Object.keys(person)
console.log("keys ==> ", keys)
// 3-2 Object.values() : values를 가져오는 메소드
let values = Object.values(person)
console.log("values ==> ", values)
// 3-3 entries
// key와 value를 묶어서 배열로 만든 배열 (2차원)
let entries = Object.entries(person)
console.log(entries)
// 3-4 assign
// 객체 복사
let newperson = {};
Object.assign(newperson, person, { name: '이창범' });
console.log('new person ==> ', newperson);
// 객체비교
let person3 = {
name: "이승준",
age: 27,
gender: "M",
}
let person4 = {
name: "이승준",
age: 27,
gender: "M",
}
let str1 = 'aaa';
let str2 = 'aaa';
console.log("answer ==> ", person3 === person4);//F
console.log("answer ==> ", str1 === str2);//T
// 객체는 크기가 커서 주소값을 가지고 있다 주소 값은 달라서 F
// 문자열은 작아서 직접 값을 가지고 있기 때문에 T
console.log(JSON.stringify(person3) === JSON.stringify(person4))
// 객체를 문자열화 시켰기 때문에 이건 T
// 3-6 객체 병합
let person3 = {
name: "이승준",
age: 27,
}
let person4 = {
gender: "M",
}
// ...=> 중괄호 풀어줘
let perfect = {...person3, ...person4};
console.log(perfect)
// 배열
// 1. 생성
// 1-1 기본 생성
let fruits = ['사과', '바나나', '키위'];
// 1-2 크기 지정
let number = new Array(5);
console.log(fruits.length)
// 2. 요소 접근
console.log(fruits[1]);
// 3. 배열 메소드
// 3-1 push
let fruits = ['사과', '바나나', '키위'];
console.log('1==> ',fruits);
fruits.push('수박');
console.log('2==> ',fruits);
// 3-2 pop 맨 뒤에 요소 삭제
let fruits = ['사과', '바나나', '키위'];
console.log('1==> ',fruits);
fruits.pop();
// 3-3 shift 맨 앞에 요소 삭제
let fruits = ['사과', '바나나', '키위'];
fruits.shift();
// 3-4 unshift 맨 앞에 요소 추가
let fruits = ['사과', '바나나', '키위'];
fruits.unshift('포도');
// 3-5 splice (시작요소,삭제할개수, '추가할 요소')
let fruits = ['사과', '바나나', '키위'];
fruits.splice(2,1,'포도','당근');
console.log(fruits)
// 3-6 slice (시작요소, 마지막요소(포함x)) 를 새로운 배열로 반환
let fruits = ['사과', '바나나', '키위', '당근', '포도'];
let newfruits = fruits.slice(2,4);
console.log(fruits.slice(2,4));
console.log(newfruits);
// 배열(2)
// 4. forEach, map, filter, find
let numbers = [11, 32, 23, 54, 665];
// 4-1 forEach 배열매개변수 자리에 함수를 넣는 것 : 콜백 함수
numbers.forEach(function (item) {
console.log("item입니다 => ", item);
});
// 4-2 map 기존 배열을 가공해서 새로운 배열 생성 배열의 길이만큼 리턴 반환
let newnumbers = numbers.map(function (item) {
return item * 2;
});
console.log(newnumbers);
// 4-3 filter
let filternumbers = numbers.filter(function (item) {
return item >= 200;
});
console.log(filternumbers);
// 4-4 find
let result = numbers.find(function (item) {
return item >= 10;
});
console.log(result);
// for, while => ~동안 : 반복문
// for(초기값;조건;증감){
// main logic
// }
const arr = [3, 25, 32, 4, 15]
for (let i = 0; i < arr.length; i++) {
console.log(i,"번째")
console.log(arr[i])
}
// ex: 0부터 10까지의 수 중에서 2의 배수만 출력
for (let i = 1; i <= 9; i += 2) {
console.log(i + 1)
}
// for ~ in문
// 객체의 속성을 출력하는 문법
let person = {
name: "john",
age: 30,
gender: 'M'
}
for (let key in person) {
console.log(key + ": " + person[key]);
}
// while
let i = 0;
while (i < 10) {
console.log(i)
i++;
}
// 3~100 사이 숫자중 5의 배수만 출력
let i = 3;
while (i < 251) {
if (i % 5 === 0) {
console.log(i)
}
i += 1;
}
// do ~ while 문
let i = 0
do {
console.log(i)
i++;
} while (i < 10)
java script
시작java
와 비슷한 듯