본문 바로가기
📙 자바스크립트 공부

[js] 스파르타 자바스크립트 강의 (~배열까지)

by 따따시 2022. 11. 7.

node.js 

= 자바스크립트 문법에 맞게 코딩을 했을때 이것을 해석하는 컴퓨터 전용 번역기

 

 

vs Code에서  js파일 만들고 터미널 - new 터미널 생성 

 

> 터미널

node hello.js

 

이라고 치면, hello world 가 출력된다. 

node.js는 자바스크립트 파일을 실행할 수 있는 일종의 전용 번역기



> 변수

값을 저장해놓은 데이터 또는 값을 가리키는 일종의 이름표

변수를 사용하면 데이터가 의미하는 바르 정확히 나타낼 수 있고, 나중에 데이터를 사용하기 쉽다.

 

> let 키워드 사용

let 변수이름 = 값

 

변수(=variable)

constlet과 달리 다시 변수에 값을 재할당할 수 없다.(=상수)

 

*var는 더이상 사용하지 않음

let과 const만 기억하기 




<데이터타입>

  1. 기본 타입
    • number, string, boolean, null, undefined
  2. 객체 타입

 

console.log(10);

// 숫자는 따옴표로 감싸줄 필요 없다.

 

let age = 37 ;

console.log(age);

 

—--

 

let isMan = true

let isWoman = false

 

// 불린데이터

 

console.log(isMan)

console.log(isWoman)

—----

let name = null ;

// null : 텅텅 비어있는 값

 

let age

// 어떤 값도 할당하지 않음 --> undefined

 

console.log(name)

console.log(age)

 

결과값 : 순서대로 null , undefiend 라고 뜬다. 

 

—---------

<연산>

 

console.log(‘my’ + ‘car’) 

=> my car

console.log(1 + ‘2’) 

=> 12

( *문자열과 숫자를 연결하면, 문자로 출력된다. )



let shoesPrice = 200000

console.log(‘이 신발가격은’ + shoesPrice + ‘원 입니다’) 라고 문자열 붙이기를 하지 않고,

백틱( ` ` )으로 감싼 아래와 같은 문장으로 표현하면 더 쉽다.

console.log(`이 신발가격은 ${shoesPrice}원 입니다.`)



console.log(10%3) : %는 나머지 연산자 (결과값 : 1 출력된다)

console.log(10**2) : 10의 2승을 의미




> 증감연산자 (자기자신을 증가/감소시키는 연산자)

 

let count = 1

const preIncrement = ++count;

 

 

//count에는 +1이 더해지고, 그 count가 preIncrement에 들어간 것

// 즉 , 콘솔창에 찍힐때 count는 이미 2가 되어있음

// count = count + 1

// const preIncrement = count 이런 순으로 적용이 된것

console.log(`count : ${count} , preIncrement : ${preIncrement} 입니다`)

//결과값 : count : 2 , preIncrement : 2 입니다 라고 찍힘

—-----------

let count1 = 1

const postIncrement = count1++;

 

console.log(`count : ${count1} , postIncrement1 : ${postIncrement} 입니다`)

 

// preIncrement = count

// count = count + 1

// 결과값은 2, 1 로 나옴 ( 먼저 count 값을 넣어주고, 추후 count1의 값을 1 증가시키는거)




—------------------



let a = true

let b = true

 

// && and

console.log(a&&b)

 

// || or

console.log(a||b)

 

a= false

 

console.log(a&&b)

 

// || or

console.log(a||b)

—--------

 

console.log('apple'==='apple')

>결과값 True

console.log('apple'=== 'Apple')

> 결과값 : false

 

—---------

조건문

조건의 결과값이 바로 앞에 우리가 배운 불린임

 

  1. if
  2. else, else if

 

if ( ) { } else { } 

if문의 조건을 만족하지 못하면 -> else

 

else if 는 조건절이 반드시 붙어야 한다. 

 

const shoes = 250000

 

if (shoes <40000){

   console.log('이 신발을 살게용')

}

else if(shoes <= 50000){

   console.log('고민해보겠습니다')

 

}

else{

   console.log('타이꾸일러!!!')

  

}

—-----------

 

let distance = 100

 

if(distance <2){

   console.log('걸어가장')

}

else if(distance <=2 && distance<5){

   console.log('택시타장')

}

// distance <=2 이 조건이 true 인지 확인

// distance <5 이 조건이 true 인지 확인

// 2개 조건이 모두 true여야 else if 문이 실행되는 것 

 

else {

   console.log('기차타장')

}

—----------------

반복문

: 조건을 설정해서 우리가 원하는만큼만 반복

 

while ( 조건절 ) {

조건을 만족시 실행할 코드

}

 

> 언젠간 반드시 반복문값이 false가 되어 반복문이 종료가 되어야한다는 점 잊지 말기

 

let temp = 20

while (temp < 25){

   console.log(`${temp}도는 적당합니다`)

   temp++

  

}

 

console.log(temp)

 

—------------

for문

: while과 같은 반복문, 좀 더 명시적으로 반복문을 표현할 수 있음

 

 for (  begin ; condition ; step ) 

 

begin : 변수 선언, 값 할당

condition : 조건을 만족하는지 체크(해당 조건이 만족하면 body 실행)

step : 앞서 선언했던 변수에 증감연산자 등을 활용해서 값을 변화시키게 됌(나중에 반복문이 끝날 수 있도록 해주는 역할)

 

for (let temp = 20 ; temp < 25 ; temp++){

   console.log(`${temp}는 적당합니다`)

}

 

—----------

 

Q. 1~10까지의 숫자중 3으로 나누었을때 나머지가 0인 숫자 출력하기

 

for (  let num = 1 ; num <= 10 ; num ++ ) {

if ( num % 3 === 0 ) {

console.log( `${num}은 3으로 나누었을 때 딱 떨어지는 숫자입니다. ` )

}

}

 

// 1부터 20까지 숫자중 홀수인 경우 숫자 ~은 홀수입니다, 짝수인경우 숫자 ~는 짝수입니다 출력



for ( let num = 1 ;  num <= 20 ; num ++ ){

if(num % 2 === 0 ) { 

console.log(`${num}은 짝수입니다.`)

}

else{

console.log(`${num}은 홀수입니다`)

}

}

 

—---------------

 

함수

function 함수명 ( 매개변수(=파라메터) ) {

}

 

> 파라메터 : 해당 function 바디 내에서 사용할 일종의 변수라고 생각 , 인풋을 매개변수라고 생각

 

function calculateAvg( price , price2 ) {

   const sum = price + price2

   console.log(`두 상품의 총합은 ${sum}원 입니다.`)

   const avg = sum / 2

   return avg  

}

// 이 리턴한 값이 아래에서 들어가게 되는 것

 

 

const priceA=1000

const priceB=2000

 

const avg1calculateAvg(priceA,priceB

// priceA와 priceB의 값을 calculateAvg 함수에 전달한다.

// calculateAvg 에서 계산되어 return해준 avg 값 이 avg1에 들어가게 되는 것

 

console.log(`A와 B의 평균은 ${avg1}원 입니다.`)

 

const priceC=4000

const priceD=5000

const avg2 = calculateAvg(priceC,priceD)

console.log(`C와 D의 평균은 ${avg2}원 입니다.`)

—-----------------------

 

1-14 퀴즈 푼것

 

 

function avgFunct(prd1, prd2, prd3){

   const allprd = prd1 + prd2 + prd3

   console.log(`allprd는 ${allprd} 입니다.`)

   const avg = allprd / 3

   console.log(`avg는 ${avg}입니다.`)

   return avg

}

 

let product1 = 10000

let product2 = 20000

let product3 = 30000

 

let avg1 =avgFunct(product1,product2,product3)

console.log('av1의 값은'+avg1+'입니다')

//60000이니까 3만원 나와야됌 결과값은

 



—-----------

 

 클래스와 객체 

 

클래스 : 객체를 만들때 마치 설계도처럼 활용하는 녀석 

흔히들 탬플릿이라고 하고 객체는 이를 구체화한것이라고 한다. 

 

생성자 : 생성자는 함수와 많이 비슷하다.

이 생성자는 말그대로 나중에 객체가 ‘생성'될때 자바스크립트 내부에서 호출이 되는 함수라고 생각하면 된다. 

 

class notebook {

constructor(name,price,company) {

this.name=name

this.price=price

this.company=company

 

}

}

 

> this : 클래스를 사용해서 객체를 만들때, 바로 객체 자신을 가리키는 키워드

> this.name :  이 this.뒤에 붙는 name,price,company는 이 객체의 속성을 의미한다.

 

const notebook1 = new notebook(‘mac’,2000000, ‘apple’)

> const notebook1이라고 변수를 선언했다.

> 이 Notebook1에 notebook이라고 하는 ‘객체'를 만들어서, 할당을 할거다

> new 라고 써주고, 뒤에 클래스명을 마치 함수처럼 호출하면서 매개변숫값을 전달해주면 된다.

> 이럼 해당 클래스(notebook)의 생성자가(constructor) 자동으로 호출이 되고, ‘객체’ 가 생성되면서 갹체의 속성들에 매개변숫값들이 전달된다. 

 

 

class Notebook{

 

   // constructor : 말그대로 객체가 생성될 떄 호출되는 함수

   constructor(name,price,company){

       this.name = name

       this.price = price

       this.company = company

       // this.속성 : 각각의 this.뒤의 속성에 매개변수를 할당할 것

   }

}

 

const notebook1 = new Notebook('mac',20000000,'apple')

// 이 3개의 데이터가 객체의 속성으로 할당되겠지

 

//notebook1은 Notebook이라는 '객체'가 할당된 '변수'이다.

// 이 notebook1을 통해서 이 notebook '객체'자체에 접근할 수 있는 것

console.log(notebook1)

 

console.log(notebook1.name)

console.log(notebook1.price)

console.log(notebook1.company)



—------------

 

클래스와 객체 (이어서)

 

클래스에는 데이터를 나타내는 속성뿐만 아니라 함수와 같이 특정 코드를 실행할수잇는 메소드도 실행할 수 있다.



class Product {

constructor ( name, price ) {

this.name = name

this.price = price

}

 

printInfo() {

console.log(`상품명 : ${this.name}, 가격 : ${this.price}원`

// 객체의 속성에 접근할 땐 this.속성명 으로 접근한다!! 

 

}

}

 

const notebook1 = new Product (‘mac’,20000000)

notebook1.printInfo()

// 위에서 변수를 통해 객체의 속성에 접근했던 것처럼

// 변수를 통해 메소드를 호출한 것 




—-----------------

 

<객체 리터럴>

 

: 자바스크립트에서는 객체 리터럴을 활용해서, 바로 객체를 만들 수 있다.

객체리터럴은 클래스와 같은 템플릿 없이 빠르게 객체를 만들 수 있는 방법이다.

2개 이상의 속성과 메소드가 있을 때는 쉼표로 구별해주고 가독성을 위해 줄바꿈도 해주는 게좋다.

 

const 변수명 = {

속성명 : 데이터,

메소드명 : function (){}

}

 

const computer1 = {

name : ‘mac’,

price : 20000,

printInfo: function () {

console.log( `상품명: ${this.name}, 가격 : ${price}`)

}

}

 

—-> 이렇게 객체 리터럴으로 빠르게 만들 수 있는데, 이렇게 사용하지 않는 이유?

바로 재사용성 때문이다. 



1-16 퀴즈 _ 넘무재미쪙 >_< 



class clothes {

constructor(color,size,price){

this.color = color,

this.size=size,

this.price = price

}

 

printInfo(){

console.log (`해당 옷의 Price는 ${this.color} , size는 ${this.size} , price는 ${this.price}입니다.`)

}

 

}



const cloth1= new clothes(‘red’,’xs’,20000)

cloth1.printInfo()

 

const cloth2= new clothes(‘blue’,’large’,40000)

cloth2.printInfo()

 

const cloth3= new clothes(‘green’,’medium’,30000)

cloth3.printInfo()

















—------------------------

 

 배열 

 

const arr1 = new Array { 1,2,3,4,5}

// 우리가 Array라는 클래스를 선언한 적은 없지만, 자바스크립트 내부적으로 이미 갖고 있는 것

 

const arr2 = [1,2,3,4,5]

// 이 두번째 방법을 주로 활용한다.

 

배열에 있는 데이터 각각을 우리는 요소(엘리먼트)라고 부른다.

배열에서는 ‘인덱스'가 객체의 속성명과 같은 역할을 해준다.

‘인덱스'는 배열 안의 데이터들이 자리잡은 순서라고 생각하면 된다.

> index는 0부터 시작한다는 사실!

 

 

const arr =[1,2,3,4,5]

console.log(arr)

 

const alphabet = ['a','b','c','d','e']

 

console.log(alphabet[0])

console.log(alphabet[1])

console.log(alphabet[2])

console.log(alphabet[3])

console.log(alphabet[4])

 

// 배열이 엄청 숫자가 많다면 일일히 셀 수가 없음,

// 따라서 배열의길이(개수)를 바로 알 수 있는 방법이 필요

// --> length 사용

 

console.log(alphabet.length)

// 따라서, 인덱스는 length -1 을 해주어야겠지(인덱스가 0부터 시작하니께)

const indexnum = alphabet.length - 1

console.log('마지막 인덱스 번호는' + indexnum + '입니다.' )

 

—------------

 

> 배열에 요소를 추가하거나 빼는 방법 : push , pop 

 

alphabet.push(‘f’)

console.log(alphabet)

 

alphabet.pop()

// 배열의 마지막 요소 ‘f’ 제거

 

> 반복문을 사용하여 배열 한개한개 출력하기

 

// 배열과 반복문

for (let i = 0 ; i <alphabet.length ; i++ ){

   console.log(alphabet[i])

}



// 위처럼 배열 길이, i 시작 , i 증가 식을 쓰지 않고

// 변수 선언 of 배열이름 하면, for문이 알아서 돌면서 위에 세웟던 식과 같은 기능을 해준다.

for (const alph of alphabet){

   console.log(alph)

}

 


> 1-18 퀴즈 - 나 못풀었었음!!! 

 

​​

let prices = [10000,20000,30000,40000,50000,60000,70000,80000,90000,100000]

// 가격들을 합친 것

 

let sum = 0

 

for ( price of prices ){

   sum += price

}

 

// 가격 평균

const avg = sum / prices.length

 

 

console.log(`합계는 ${sum}이고, 평균은 ${avg}이다.`)

 

 

🥸 기억하자!!! 

포인트1. sum과 avg를 for문 밖으로 빼주어야 한다는 것

포인트2. sum +=price

포인트3. const avg = sum / prices.length

 

댓글