카테고리 없음

[JavaScript] 자바스크립트 기초정리

코딩하는둥이 2022. 11. 28. 16:26

변수

 : 어떠한 정보에 이름을 붙여서 저장 시 사용

    name ="mike"; (변수명 = "변수의 값" 한 줄이 끝이라는 의미) 

    age = 30;

 

 

변수 특징

 1) 문자와 숫자, $와 _만 사용

  2) 첫글자는 숫자가 될 수 없음

  3) 예약어 사용 금지

   4) 가급적 상수는 대문자로 알려주기

  5) 변수명은읽기 쉽고 이해할 수 있게 선언

    

 

변수 접근하기

 

  1) alert()

      경고창을 띄우는 함수

name : "make"; alert(name);

  2) console.log()

       로그을 찍는 함수

age = 30; consol.log(age)

변수 선언

 

  1) let

      변수를 다른 값으로 바꿀 수 있음

      let age =30;

 

  2) const

       절대로 바꿀 수 없는 상수

        ex) 파이, 최댓값, 생일

        const PI = 3.14; ( 변수명은 대문자로 쓰는 게 좋음)

  * 처음에 const 사용하고 나중에 바뀔 수 있는 것들은 const 사용

 

자료형

 

1 ) 문자형

// 문자형 종류
const name1 = "mike"; 
const name2 = 'mike';
const name3 = `mike`;

// 작음 따음표랑 큰 따음표 차이가 없음
// 중간에 '를 사용하고 싶을 때 큰따음표를 이용하거나 \' 를 사용하면 된다.
const message = "I'm a boy";
const message = 'I\'m a boy';

// 변수 이름 가지고 오기
const message3 = 'My name is $(name)';
console.log(message3);
// 값 : My name is mike

// 연산 사용할 수 있음
const message4 ='나는 $(30+1)살 입니다.';
console.log(message4);
// 값 : 나는 31살 입니다.

// 주의 $() 사용할 때""을 사용하면 $() 그대로 출력됨

2) 숫자형

const age =30l // 숫자형 Number
const PI = 3.14;

console.log(1+2);  // + 더하기
console.log(10-3); // - 뺄기
console.log(3*2); // * 곱하기
console.log(6/3); // / 나누기
console.log(6%4); // % 나머지
// 결과값 3 7 6 2 2 

// 1 나누기 0은? 
const x = 1/0;
console.log(x);
// 결과값 Infinity
// 무한대로 값을 받을 수 있음

// 문자형 나누기 숫자는?
const name = "mike";
consty = name/2;
console.log(y)
// null 
// 숫자가 아니다.
const age = 30;
const name ="sjh;

const str1= "나는";
const str2= "입니다.";
console,log( str1+ age +str2);
// 결과 값:나는 30입니다. ( 숫자형은 문자형으로 변함)
console,log( str1+ name +str2);
// 결과 값: 나는 sjh 입니다.


// 참과 거짓 찾기

const a = true; // 참
const b = false; // 거짓

const name = "Mike"; 
const age = 30;

console.log(name == "Mike");
console.log(age>40);
// 값 true false

3) null괴 underfiend

//nnull  존재하지않는 값
int user = null;

//undefiend 값이 할당되지 않음
let age;
condile.log(age)

4) typeof

   : 다른 개발자가 만든 타입을 알아야 할 때 

   : API 통신을 통해 받아온 데이터들 타입에 따라 다른 방식으로 사용할 때 사용  

// 타입을 알려줌
const name = "Mike";

console.log(typeof 3);  // number
console.log(typeof name); // string
console.log(typeof true); // boolean
console.log(typeof "xxx"); //string
console.log(typeof null);  // object 객체형(null는 객체가 아님)
console.log(typeof undefined);// undefined

 

 

대화상자

 

  - 단점:  스크립트 일시 정지

               스타일링 불가능

 

1) alert()

    메세지를 띄우고 확인 버튼을 누르기 전까지 안 없어짐

    일반적으로 알리는 용도

 2) prompt

    사용자에게 어떤 값을 입력받을 때 사용

    취소하면 null 값이 나옴

    디폴트 값 입력 가능

const name = prompt("이름을 입력하세요.");
alert("'안녕하세요,${name)님, 환영합니다.');
const name = prompt("예약일을 입력해주세요.", "2020-10-");

  3) confirm

       확인 받을 때 사용

       확인 클릭 시 true 취소 클릭 시  false

const isAdult = confirm("당신은 성인입니까?"); console.log(isAdult);

 

형변환(Type Conversion)

 

 1)  String()

      문자형으로 변환

 

 2) Number()

       숫자형으로 변환

 

 3) Boolean()

       불린형으로 변환

       false 

         - 숫자 0

         -  빈 문자열"

         - null

         - underfined

         - NaN

       true

         - false 빼고 다

 

// 문자형
concole.log(
    String(3),
    String(true),
    String(false),
    String(null),
    String(undefined)
)
//결과값: "3" "true" "false" "null" "undefined"

// 숫자형
concole.log(
    Numder(3),
    Numder(3sadasd),
    Numder("안녕"),
    Numder(true),
    Numder(false),
    Numder(null),
    Numder(undefined),
    Numder(0),  
    Numder('0'), 
    Numder(''), 
    Numder(' ')
)
//결과값: 3 NaN NaN  1 0 0 NaN false true false true

//불린형
//trus
concole.log(
    Boolean(1),
    Boolean(123),
    Boolean("javascript),
)
//결과값: true true true 
//false
concole.log(
    Boolean(0),
    Boolean(""),
    Boolean(null),
    Boolean(undefined),
    Boolean(NcN),
)

//결과값: false false false false false 



const mathScore = prompt("수학 몇점?");
const engScore = prompt("영어 몇점?");
const recult = (mathScore + engScore) / 2 ;
console.log(result)
// 수학 90 영어 80 결과값: 4540;
// 문자형으로 인식함
// 명시적 형변환 "9080" / 2 = 4540(자동 형변환)

const mathScore = 90;
const engScore = 80;
const recult = (mathScore + engScore) / 2 ;
console.log(result)
// 결과값: 85;


const mathScore = prompt("수학 몇점?");
const engScore = prompt("영어 몇점?");
const recult = Number(mathScore + engScore) / 2 ;
console.log(result)
// 결과값: 85;

 

연산자(Operators)

 

  1) + 더하기     +=

  2)  - 빼기         -=

  3) / 나누기       /=

  4) * 곱하기       *=

  5) % 나머지     %=

  6) ** 거듭제곱  **=

    

 우선순위 

    * /  > +-

 

증감 연산자

  변수 ++;

   ++ 변수; 

 

감소연산자;

  변수--;

   --변수;

 

비교 연산자

   true, false

 

  1) < 작다

  2) > 크다

  3) <= 작거나 같다

  4) >=  큰 거나 같다

  5) == 같다

  6) != 같지 않다

// 동등 연산자
const a =1;
xonst b = "1";

console.log( a == b); 
// 결과값 true

// 잎치연산자
const a =1;
xonst b = "1";

console.log( a === b);
// 결과값 false

 

조건문

 : 조건에 따라 행동이 달라지게 함

 

 1) if문 

// age기 19보다 크면 환영합니다 출력
if(age > 19){
  console.log("환영합니다");
  

}

2) if else문 

// age기 19보다 크면 환영합니다 작으면 안녕히가세요 출력
if(age > 19){
  console.log("환영합니다");

}
else{
console.log("안녕히 가세요");
}

 

논리연산자

 

1) || (or)

   - 여러 개 중 하나라도 true 면 true

    즉, 모든 값이 false 일 때만 false

2) && (and)

    - 모든 값이 true면 true

      즉 하나라도 false면 false를 반환

3) ! (not)

   - true면 false

  - false면 true

 

반복문 loop

 : 동일한 작업을 여러 번 반복

 

1) for 

 - 조건이 있을 때 반복문으로 쓰면 좋음

 for( 초기값; 조건; 코드 실행 후 작업){

    // 반복할 코드 

}

for(let i = 0; i <10; i++){
   // 반복할 코드
|

 

2) while 

 조건식이 참이면 무한 반복

변수 초기화;

while(조건){

  //코드

}

let i = 0;

// i가 10보다 작으면 i는 증가
while(i<10){
   i++;
}

 

3) do..while

 조건식이 참이면 do의 코드를 실행

 while랑 큰 차이점은 코드를 먼저 실행

변수 초기화

do{

 //코드

 i++;

}while(조건식)

ㅣlet i = 0;

do{
 //코드
}
 i++;

}while(i<10)

 

4) break

 :  멈추고 빠져나옴

while(true){ //  무한 반복
   let answer = confirm("계속 할까요?");
   if(!answer){
     break; // 빠져나옴
   
   }

 

5) coutunue

 : 멈추고 다음 반복으로 진행

got(let i = 0; i < 10; i++){
 if(i%2){
   contiue;// 참일때 코드를 나가지 않고 다시 반복
 }
 console.log(i);
}

 

6) switch

 if else와 비슷하지만 케이스가 다양할 경우 간결하게 사용 가능

switch(평가){
 case A:
 // A일때 코드
 case B:
 // B일때 코드
}

//예

// 사과 : 100원
// 바나나 : 100원
// 키위 : 100원
// 멜론 : 100원
// 수박 : 100원
// 사고 싳은 과일을 뭉러보고 가격 알려주기 

let fruit = prompt('무슨 과일을 사고 싶나요?"');

swutch(Fruit){
  case '시괴':
    console.log('100원입니다.'):
    break;
  case '바나나':
    console.log('200원입니다.'):
    break;
  case '키위':
    console.log('300원입니다.'): 
    break;
  case '멜론':
    console.log('400원입니다.'):
    break;
  case '수박':
    console.log('500원입니다.'):
   else:
     console.log('없습니다.'):  
    break;

  
}

 

함수(function)

 유지 보수가 쉬움

 간결하다

 한 번에 한 작업에 집중

 읽기 쉽고 어떤 동작인지 알 수 있게 네이밍

  1) showError // 에러를 보여줌

  2)  getName // 이름을 얻어옴

  3)  createUserData // 유저데이터 생성

  4) checkLogin // 로드인 여부 확인 

 

함수 선언문  

 : 어디서든 호출 가능

// 함수 함수명 매개변수(여러 개 일수도 있다)

function sayHello(name){

   console.log('Hello, ${name}');

 

}

sayHello('Mike');

// 함수
function showError(){
  aler('에러가 발생했습니다. 다시 시도해 주세요');
}

showError();

// 매개변수 있는 함수

function sayHello(name){
  const msg ='Hello, ${name}';
  condole.log(msg);
}

sayHello('mike');

// 매개변수 있는 함수, 이름이 처음 입력하는 경우

function sayHello(name){
  let msg ='Hello';
  if{name}{
  msg += ', $(name}';
  }
  condole.log(msg);
}

sayHello();
sayHello('mike');

//결과값  "Hello" "Hello, mike"

// 전역 변수와 지역 변수

let name - "Mike";

function sayHello(name){
   console.log(name); 
}

sayHello();
sayHello('jane');

// 결과값 undefined "jane"



//OR
function sayHello(name){
 let newName = name || 'firend';
 console.log(msg);
 
}
sayHello();
sayHello('jane');

// 결과값  "Hello, friend"  "Hello, jane"


// default value 기본값 설정
function sayHello(name = 'friend'){
 let msg = 'Hello, ${name}';
 console.log(msg);
 
}
sayHello();
sayHello('jane');

// 결과값  "Hello, friend"  "Hello, jane"

//return 으로 값 반환

function add(num1, num2){
 return num1+ num2;

}

const result = add(2,3);
console.log(result);

//결과값 5


//return 값이 없을 때는  undefied
//1)
function showError(){
  alert("에러 발생");

}
const result = showError();
console.log(result);

//결과값 undefined


// 첫 번쟤 실행 후 undefined
function showError(){
  alert("에러 발생");
  return;

}
const result = showError();
console.log(result);

//결과값 undefined

 

함수 표현식

 : 코드에 도달하면 생성

let sayHello = function(){

  console.log('Hello');

}

sayHello();

 

화살표 함수(arrow function)

 let add = (num1, num2) => (
  return num1 + num2;
)

// return문이 한중이면 한줄로 표현 가능
 let add = (num1, num2) => num1 + num2;

)

// 인수가 하나라면 가로 생략 가능
let sayHello = name => 'Hello, ${name}';



// 인수가 없으면 한 줄 안됨

let showError = () => {

 alert('error!');

}
// 함수 선언문

showError();

function showError(){
 console.log("error");
}

// 화살표 선언문
const add =(num1, num2) => num1+num2;

 

객체(Object)

const superman ={

   name : 'clark';    // 키(key) : 값(value)
   age : 33;

}

// 접근
superman.name // 'clark
superman['ago'] //33

//추가
superman.gender = 'male';
superman['hairColor'] = 'black';
  
 //삭제
 delete superman.hairColor;
 const name ='claek';
 const age = 33;

// object- 단축 프로퍼티
const superman = {
 name, 
 age,
 gender:'male',
}

//프로퍼티 존재여부 확인
superman.brithDay; //undefined
'birthDay' in superman; //false
'age; in superman; //true

//for ...in 반복문
for(let key in superman){
 console.log(key);
 consile,log(superman[key]);
}

 

function makeObject(name, age){
    return{
    name, 
    age,
    hobby:"football"
    };
}

const mike = makeObject("mike", 30);
condole.log(mike);

condole.log('age' in mike);   //true
condole.log('brithday' in mike); //false


//객체 in

function isAdult(user){
 if (!(user.age < 20) || user.age < 20) {
     retrun false;
  }
     return true;
}

const Mike ={
  name:" mike",
  age:30
};

const jane ={
 name: "jane"
};

console.log(isAdult(mike)); //true
console.log(isAdult(jane)); //false


//객체 for ...in
const Mike ={
  name:" mike",
  age:30
};

for(x in mike){
  console.log(mike[x]); m// mike['age'];
}

 

let boy= {

 name:'mike';

 sayHello,

}

let girl= {

 name:'jane';

 sayHello,

}



boy.sayHello();

girl.sayHello();



sayHello : function(){

 console.log('Hello, i'm ${this.name}');



}

 

* 화살표 함구는 일반 함수와 달리 자신만의 this를 가지지 않음

  화살표 함수 내부에서 this를 사용하면, 그 this는 외부에서 값을 가져옴

 

배열 (Array)

  문자 뿐만 아니라 숫자, 객체, 함수 등도 포함할 수 있음

 

let students = ['철수'  , '영희' , ... '영수'];
cosole.log(students[0]; // 철수
cosole.log(students[1]; // 영희
cosole.log(students[29]; // 영수


students[0] = '민정';
console.log(students) //['민정', '영희' ...


// length: 배열의 길이 

  students.length //30



// push(): 배열의 끝에 추가 

  let days v= ['월', '화','수'];
  day.push('목')
  console.log(days) // ['월', '화','수','목'];

// pop() 배열의 끝 요소 제거 

  let days v= ['월', '화','수'];
  day.pop()
  console.log(days) // ['월', '화'];

// shift,unshift 배열 앞에 제거/ 추가 

// 추가 
  days.unshift('일');
  console.log(days) // [''일', 월', '화','수','목'];

// 제거

  days.shift();
  console.log(days) // [ 월', '화','수'];

 

 

for 배열 사용

let days = ['월','화','수'];

for(let index = 0; index < days.length; index++){
  console.log(days[index]);
}

 

 

for .. of 배열 사용

let days = ['월','화','수'];

for(let day of days){
  console.log(day);
}