/*
객체(Object)
-속성의 모음으로 이루어진 데이터
-속성에는 어떤 데이터 타입이라도 할당 가능
-속성의 구분,
-속성의 정의 속성명(키):속성값
*/
var student = {
grade:1,
school : "lion school"
};
console.log(student); //{grade: 1, school: 'lion school'}
console.log(typeof(student)); //object
//객체의 값 호출
var gradeInfo = student.grade;
console.log(gradeInfo); //1반환
//객체의 키 호출
var key = Object.keys(student)[0];
console.log(key); //grade
//객체에 속성 추가
student.class = 3;
console.log(student);//{grade: 1, school: 'lion school', class: 3}
console.log(student['class']); //3 --> 객체에서 속성을 불러오는? 방법
console.log(student.class); //3
//비어있는 객체
var teacher = new Object(); //생성자 생성하는 방법
var teacher = {
};
현재 대부분 브라우저는 ECMA의 표준 JS기반 동작
Web API + ECMAScript = JavaScript
<html>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>안녕하세요!</h1>
<p>JavaScript는 어려워:(</p>
<script src = "ex01.js"></script> <!-- 보통 이렇게 마지막에 넣음-->
</body>
</html>
<js>
document.write('<p>JavaScript는 재밌어:)</p>');
<변수주석_js>
/*
변수 : 데이터를 담아 놓기 위해 이름표를 붙여놓은 공간
*/
//변수 선언
//var num;
//변수 초기화
//num = 10;
//변수 선언 + 초기화
var num = 10;
num = 20;
console.log(num);
//사용할 수 없는 변수명
//숫자로 시작하면 안됨, 특수문자 쓰면 안됨
//예약어:프로그래밍 언어 자체적으로 사용할 단어 혹은 키워드 => 변수 X
//변수명(식별자)
//1.Camel Case
//var sendmail
//2.snake_case
//var send_emial_date
//주석(coments)
//1. 싱글라인 : //
/*
2. 멀티라인
2. 멀티라인
*/
<자료형(1)>
/*
자료형
1. 기본형, 단순형, 원시형
-number
-string
-boolean
-undefined
-null
-symbol
2. 참조형, 객제(Object)
*/
//number
//정수(integer), 실수 구분이 없음
var price = 10000;
console.log(price);
//string
var myname = "테킷";
console.log(myname);
var myname2 = '멋사';
console.log(myname2);
var myname5 = "\"사자\""; //따옴표인식은 역슬래쉬를 써주자
console.log(myname5);
//boolean
var isTrue = true; //소문자로 해줘야함
console.log(isTrue);
//undefined
var a;
console.log(a); //출력: undefined --> 정의가 되어있지 않다 = 변수에 데이터가 저장되어 있지 않다.
<자료형(2)>
/*
객체(Object)
-속성의 모음으로 이루어진 데이터
-속성에는 어떤 데이터 타입이라도 할당 가능
-속성의 구분,
-속성의 정의 속성명(키):속성값
*/
var student = {
grade:1,
school : "lion school"
};
console.log(student); //{grade: 1, school: 'lion school'}
console.log(typeof(student)); //object
//객체의 값 호출
var gradeInfo = student.grade;
console.log(gradeInfo); //1반환
//객체의 키 호출
var key = Object.keys(student)[0];
console.log(key); //grade
//객체에 속성 추가
student.class = 3;
console.log(student);//{grade: 1, school: 'lion school', class: 3}
console.log(student['class']); //3 --> 객체에서 속성을 불러오는? 방법
console.log(student.class); //3
//비어있는 객체
var teacher = new Object(); //생성자 생성하는 방법
var teacher = {
};
<자료형(3)>
var name1 = "김멋사";
var name2 = "김멋사";
console.log(name1 == name2); //true
//Symbol은 고유하다
var name3 = Symbol("이테킷");
var name4 = Symbol("이테킷");
console.log(name3 == name4); //false
var myclass = {
[Symbol("이테킷")] :1,
[Symbol("이테킷")] :2
};
<연산자>
/**
* 연산자
* -1개의 표현식에 대해 산술, 대입
* 논리, 타입등을 평가하여 값을 생성하는 작업
*/
//1.산술 연산자
var a = 10;
var b = 3;
console.log(a+b);
console.log(a-b);
console.log(a*b);
console.log(a/b);
console.log(a%b);
console.log(a);
console.log(b);
var c = 7;
//console.log(++c); //8 <--c값(7)에다가 플러스 1함
console.log(c++); //7
console.log(c); //8 <--위에 7+1
//2. 대입 연산자, 할당 연산자
//3. 비교 연산자
console.log(2 == 2);
console.log(2 == "2"); //암묵적 형변환
console.log(2 === "2"); //'타입'이 같은지
//4. 논리 연산자
//논리합(or)
//피연산자 중에 하나라도 참이면 참
console.log(true || true); //true
//논리곱(and)
//피연산자 모두가 참이어야 참
console.log(true && true);
//부정(not)
//피연산자의 boolean값을 부정
//5. typeof 연산자
console.log(typeof 1);
console.log(typeof "1");
<문자열 다루기>
//문자열 선언
var greeting = "Hello!";
var farewell = 'Bye!';
var myname = '김테킷';
var sentence = greeting +'\n' + myname;
console.log(sentence);
console.log(farewell +2);//Bye!2 <-- 에러는 안 나고 암묵적 형변환을 통해 이렇게 출력됨
//이스케이프 시퀀스
var sentence = greeting +'\t' + myname;
console.log(sentence); //Hello! 김테킷
//템플릿 리터럴(ES6) --> 멀티라인 텍스트 작업 가능, 이스케이프 시퀀스 필요없음
var a = `안녕하세요!
여러분:`;
console.log(a); //엔터키 그대로 반영
var d = `이 물건은 ${200+450}원입니다.` //계산 해줌
console.log(d);
//문자열 함수
var abc = "I am Iron man";
//indexOf
//문자열의 특정 값이 시작되는 위치
//인덱스는 0부터 시작
console.log(abc.indexOf("man")); //10
//slice
//문자열의 일부를 잘라낼 때
console.log(abc.slice(0,4));//I am
//toUpperCase(), toLowerCase()
console.log(abc.toUpperCase());
console.log(abc.toLowerCase());
//startsWith(), endsWith()
//특정 문자를 걸러낼 때
var efg = 'This is my car.';
console.log(efg.startsWith('Th')); //true
console.log(efg.startsWith('th')); //false
console.log(efg.endsWith('car.')); //true
//includes()
console.log(efg.includes('is')) //true
<배열>
/**
* 배열(Array)
* -복수의 데이터를 순서대로 담고 있는 자료구조
* -배열의 순서는 0부터 시작
* -배열은 객체!
* -키 => 인덱스, 값 => 요소
*/
var mbti = ['INFP','ENFJ','INTJ'];
console.log(mbti[0]); //INFP
console.log(mbti.length); //3
mbti[3] = 'ESFP'
console.log(mbti.length); //4 --> 배열 요소 추가
mbti[2] = 'ISTJ' //원래 있던 요소에 덮어쓰기
//push()메서드
//배열의 마지막에 추가
mbti.push('ESFP','ISTJ');
//스프레드 문법
var newMbti = [...mbti,'ESFP','ISTJ'];
console.log(mbti);
console.log(newMbti);
//pop()
console.log(mbti.pop()); //마지막에 있는게
//unshift()
//배열의 앞쪽에서 작동
console.log(mbti.unshift('ESFP','ISTJ')); //배열 앞쪽에 요소 추가
//스프레드 문법
var newMbti = ['ESFP','ISTJ',...mbti];
console.log(mbti);
console.log(newMbti);
//shift()
console.log(mbti.shift());
console.log(mbti);
//slice()
console.log(mbti.slice(0,2)) //2개의 원소만 출력
console.log(mbti.slice()) //전체복사 : 아무런 인자를 넣지 않으면 됨
console.log(mbti.slice(-1)) //끝에서부터
//join()
console.log(mbti.join());
console.log(mbti.join('-')); //구분자
console.log(mbti.join(''));//깡통
//sort()
console.log(mbti.sort()); //오름차순 정렬
//reverse()
console.log(mbti.sort().reverse()); //내림차순 정렬
<조건문>
/**
* 제어문(control flow)
* 1. 조건문
* 2. 반복문
*/
var a = 5;
//1. if ... else
if(a > 2){
console.log('a>2');
}else if(a == 2){
console.log('a=2');
}
else if(a == 0){
console.log('a=0');
}
else{
console.log('a<=2');
}
//2. switch
//switch문은 끝까지 수행함
//->특정 조건을 만족하고 끝내고 싶으면 꼭 break;를 조건마다 써줘야함
var mbti = "INFP";
switch(mbti){
case 'INFP':
val = 'INFP';
break;
case 'ENFP':
val = 'ENFP';
break;
case 'ISTJ':
val = 'ISTJ';
break;
default:
val = '유효한 값이 아닙니다.'
}
<반복문>
/**
* 2. 반복문(loop)
*/
//1. for
//for(var i = 0; i < 10; i++){
// console.log(i); //0~9출력
//}
//for(var i = 10; i > 10; i--){
// console.log(i); //10~1
//}
//for(var i = 0; i < 10; i++){
// for(var j = 0; j < 10; j++){
// console.log(`${i}-${j}`);
// }
//}
//2. while
var flag =10;
while(flag > 0){
console.log(flag); //이렇게만 쓰면 무한히 증가(무한루프) --> 컴퓨터에 안 좋음
flag--;
}
//3. do...while
//무조건 일단 먼저 do안에 있는건 실행
var flag = 10;
do{
console.log(flag);
flag--;
}while(flag>10); //세미콜론 써줘야함
<에러처리>
/**
* 예외(에러)처리
*/
try{
//에러가 발생할 가능성이 있는 코드
myfunc();
} catch(error){
//에러가 발생했을 떄 실행되는 코드
console.log("에러발생");
} finally{
//에러 발생여부와 상관없이 무조건 실행
console.log("무조건 실행");
}
<함수(1)>
/**
* 함수(functions)
* -작업의 묶음
* -코드를 반복해서 작성하는 비효율을 줄임
*/
function multiply(a,b){
return a*b;
}
multiply(10,5)
console.log(multiply(10,5)); //50
var result = multiply(435,24);
console.log(result); //10440
//JS의 독특한 방법
//익명함수를 변수에 할당하는 것처럼 사용 가능
var multiply = function(a,b){
return a*b;
};
console.log(multiply(10,5)); //50
<함수(2)>
/**
* 변수 키워드 - var, let, const
*/
var a = 10;
while (true){
var a = 1000;
break;
}
console.log(a);
//호이스팅
console.log(word); //undefinde
word = "happy";
console.log(word); //happy
var word; //나중에 쓰든 먼저 쓰든 JS가 var 키워드 인지
// let
let word;
console.log(word); //undefinde
word = "happy";
console.log(word); //happy
<함수(3)>
/**
* 화살표 함수
*/
//첫번째 방법
// let plus = (a,b) => {
// return a+b;
// };
// console.log(plus(2,3)); //5
//두번째 방법
let plus = (a,b) => a=b;
console.log(plus(2,3)); //5
//파라미터가 1개일 때
let print = word => {
console.log(word);
};
print("Hello!"); //Hello!
//입력값이 없을 때
let myfunc = () => {
return 1;
}
console.log(myfunc()); //1
'School > 멋쟁이사자처럼' 카테고리의 다른 글
멋쟁이사자처럼5주차스터디 (0) | 2023.05.18 |
---|---|
테킷-JavaScript Next Level (0) | 2023.05.12 |
테킷-프론트엔드 온보딩 트랙 (0) | 2023.05.10 |
open API 실습 (0) | 2023.05.07 |
python-크롤링 (0) | 2023.05.07 |