for = 횟수를 정해져있는 반복을 할때 , 가독성이 좋음
while = 무한이거나 횟수는 모르지만 언제 끝내야할지 알떄 조건문으로 사용, 가독성이 별로 좋지 않음

 

while 문이나 for문이나 루프(loop)라고 하는데 정해진 코드를 반복한다는 뜻

그런데 무한대로 반복하면 프로그램은 더 진행이 안되기 때문에 어떤 제한조건을 걸어놓고 반복을 한다

 

for문

- 초기값과 조건식 증감연산으로 이루어져 있으며 동작문을 실행
- 조건식으로 true false 를 판단

for(초기값;조건식;증감연산){
    동작문
}
 
//ex
for(let i = 0; i < 5; i++){ // 5가 될때까지 반복문을 돌려라
    console.log(i)
}
cs

 

for문은 조건식이 들어가 있으므로 "구하고자 하는 값의 조건이 무엇인지 정확할 경우" 사용한다.
또한 초기값 조건식 증감연산이 while문과 달리 블록에서 바로 찾을 수 있기 때문에 가독성이 좋다

 

while문

- 조건식이 false가 될때 까지 무한 실행
- true 라면 계속 실행하고 false 가 되면 즉시 while 문 종료

while(조건){
    동작문
}
 
//무한루프 ex
while(true){
    console.log("실행중")
}
 
//break와 변수 사용
let num = 0
while(true){
    num++
    if(num === 10break // 계속 반복문을 돌다가 10이 되면 종료(while문 종료)
    console.log(num)
}
cs

while문이 무한으로 실행하게 되면 브라우저가 과부하가 온다.
그렇기 때문에 while문 안에는 무한루프를 종료 하는 순간이 와야한다.

변수를 이용하여 false 가 될때를 지정하여 무한루프를 종료하거나 break문을 사용하여 무한루프를 벗어날 수 있다.
이와 같이 루프를 계속 돌기 때문에 "내가 구하고자 하는 값의 조건이 무엇인지 정확히 모를 경우, 유동적인 경우"

while문을 사용한다.

 

break

break 는 while이나 for문에서 루프를 탈출하기 위해 사용한다

보통 if 문하고 함께 사용

 

continue

루프를 돌다가 continue를 만나면 그 블록을 건너 뛰고 다시 조건식으로 간다

 break 키워드와 함께 세밀한 흐름 제어를 위해서 사용함

for (let index = 0; index < 5; index++) {
    if(index == 3continue;
    console.log(index);
}
[실행값]
0
1
2
4
cs

 

https://smoothiecoding.kr/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%B0%98%EB%B3%B5%EB%AC%B8-while%EB%AC%B8-for%EB%AC%B8/

https://chaeyoung2.tistory.com/67

'이노베이션 자바스크립트 회고' 카테고리의 다른 글

자바스크립트의 변수 타입  (0) 2022.08.10
연산자  (0) 2022.08.10
매개변수  (0) 2022.08.10
reduce(), map()  (0) 2022.08.10
자바스크립트 함수, 프로퍼티, 메서드  (0) 2022.08.10

자바 스크립트의 변수 타입에는 크게 Primitive type(원시타입)과 Reference Type(참조타입)으로 나누어져 있다

원시타입 : 변수들은 데이터 복사가 일어날 때 메모리 공간을 새로 확보하여 독립적인 값을 저장하며

참조 타입 : 메모리에 직접 접근이 아닌 메모리의 위치(주소)에 대한 간접적인 참조를 통해 메모리에 접근하는 데이터 타입이다.

 

●원시타입

- 원시타입(기본 자료형 또는 기본형)
- let num = 1; ●숫자형
- let str = 'abc'; ●문자형
- let bool = true; 또는 false; ●논리형 ture, false 둘만 가능 - 불리언
- let undi = understand; ●
- let nul = null; ●
- let symbol = symbol();

 

자바스크립트에서 원시 타입 (string, number, bigint, boolean, undefined, ES6 부터 추가된 symbol) 은 변수에 할당될 때, 메모리의 고정 크기로 원시 값을 저장하고 해당 저장된 값을 변수가 직접적으로 가리키는 형태를 띈다. 또한 값이 절대 변하지않는 불변성을 갖고있기때문에 때문에 재할당 시 기존 값이 변하는것 처럼 보일지 몰라도 사실 새로운 메모리에 재할당한 값이 저장되고 변수가 가리키는 메모리가 달라졌을 뿐이다.

 

기존에 메모리에 생성된 값들은 그 자체가 변경될 수 없다. 그저 식별자와 연결 되있는 메모리가 바뀌었기에 우리 눈에는 재할당 된 것처럼 보일뿐이다.

 

●참조타입

 

참조타입(참조 자료형 또는 참조형)
let array = []; ●배열값
let obj = {}; ●객체자료형
elt func = function(){}; ●함수자료형

새로운 변수 b에 a를 할당 하게되면 변수 b의 공간에는 a의 값을 값을 통째로 복사하여 변수의 메모리에 담게 된다. 그렇기에 변수 a가 50으로 재할당 되더라도 b는 전혀 영향을 받지 않는다

 

원시타입을 제외한 나머지는 참조 타입이다

자바스크립트에서 원시 타입을 제외한 나머지는 참조타입(객체(Object))이라 할 수 있다. 배열과 객체, 그리고 함수가 대표적이며, 원시타입과 가장 큰 차이점은 변수의 크기가 동적으로 변한다는 것이다. 이러한 특징 때문에 Object의 데이터 자체는 별도의 메모리 공간(heap)에 저장되며, 변수에 할당 시 데이터에 대한 주소 ( 힙(Heap) 메모리의 주소값)가 저장되기 때문에 자바스크립트 엔진이 변수가 가지고 있는 메모리 주소를 이용해서 변수의 값에 접근하게 되는것이다.

let myArray = [] 이라는 배열을 생성하면 위와 같이 됌

원시타입의 값들은 직접적으로 저장

참조타입은 heap메모리의 주소값이 저장

 

참조 타입의 변수는 실제 데이터가 저장된 주소를 참조하기에 참조(reference) 타입이라고 불리는 것이다. 그렇기에 변수의 복사나 수정 시 참조 여부를 잘 고려해야 한다. 만일 이러한 특성을 고려하지 않은 채 중요한 정보를 담고있는 객체나 배열에 수정 및 복사를 가하게되면 원본 데이터가 예상치 못한 방향 으로 변경될 수 있으므로 항상 이를 고려하자.

 

typeof로 확인가능 console.log(typeof(null));

 

https://velog.io/@nomadhash/Java-Script-%EA%B9%8A%EC%9D%80-%EB%B3%B5%EC%82%AC%EC%99%80-%EC%96%95%EC%9D%80-%EB%B3%B5%EC%82%AC

 

[Java Script] 원시타입과 참조타입 👀

자바스크립트에서의 복사는 얕은 복사(shallow)와 깊은복사 (deep)으로 나뉜다. 먼저 원시 타입(Primitive type)의 변수들은 데이터 복사가 일어날 때 메모리 공간을 새로 확보하여 독립적인 값을 저장

velog.io

 

 

 

'이노베이션 자바스크립트 회고' 카테고리의 다른 글

for문, while문  (0) 2022.08.11
연산자  (0) 2022.08.10
매개변수  (0) 2022.08.10
reduce(), map()  (0) 2022.08.10
자바스크립트 함수, 프로퍼티, 메서드  (0) 2022.08.10

연산자 = 계산을 돕는 기호

 

-대입연산자

-산술연산자

-비교연산자

-논리연산자

-비트연산자

-문자열연산자

 

●대입연산자

const num = 10;
cs

=

 

●산술연산자

const num = 10 * 2;
cs

위의 산술 연산자는 대입연산자롸 사용 가능

●비교연산자

두 값을 비교하여 어느 값이 더 큰지 true, false로 반환

const num1 = 10;
const num2 = 5;
console.log(num1 > num2);
cs

●논리 연산자

and, or, not

const num1 = 10;
const num2 = 5;
const num3 = 2;
(num1 > num2) && (num2 > num3); //true
(num1 > num2) && (num2 < num3); //false
cs

●비트 연산자

비트 연산자는 비트, 즉 바이너리(binary) 표현을 이요하여 수를 연산하는것임

논리 연산과 동일하게 연상하는 방법이지만 bit를 가지고 연산함

 

10진법이 아닌 바이너리는 2진법이고 '1'과'0'만을 사용하는 진법

binary digits = bits 우리가 흔히 쓰는 32비트,64비트 이럴데에 쓰임

●문자열 연산자

문자열 연산이란 문자열을 하나로 이어주는것을 말함

두 문자열 혹은 그 이상의 문자열 여러개를 하나의 문자열로 만들어 줄 때 사용

const name = 'abc'
const title = 'efg'
 
console.log(name+''+title);
cs

 

주의할점 : 연사자는 + 기호인데 주의할점은 변수에 담긴 값이 문자가 아닌 숫자일 경우는 산술 연산자인 더하기가 되버림

 

'이노베이션 자바스크립트 회고' 카테고리의 다른 글

for문, while문  (0) 2022.08.11
자바스크립트의 변수 타입  (0) 2022.08.10
매개변수  (0) 2022.08.10
reduce(), map()  (0) 2022.08.10
자바스크립트 함수, 프로퍼티, 메서드  (0) 2022.08.10

● 매개변수

매개변수란 함수를 정의할때 사용되는 변수

인수란 함수가 호출될때 매개변수에 실제로 담기는 값

 

자바스크립트에서는 함수를 정의할때 매개변수의 타입을 따로 명시하지 않음

함수를 호출할때도 인수로 전달된 값에 대해 어떠한 타입 검사도 하지 않음

 

함수를 호출할때 함수의 정의보다 적은 수의 인수가 전달되더라도 다른 언어와 달리 오류가 발생하지 않음

이런 경우 자바스크립트는 전달되지 않은 나머지 매개변수에 자동으로 undefined 값을 설정함

 

 

 

callback 배열의 각요소에 대해 실행할 함수 네가지를 받음

acc

function addNum(x, y, z) { // x, y, z라는 3개의 매개변수를 가지는 함수 addNum()을 정의함.
 
    return x + y + z;
 
}
 
addNum(1, 2, 3); // 인수로 1, 2, 3을 전달하여 함수를 호출함. -> 6
 
addNum(1, 2);    // 인수로 1, 2을 전달하여 함수를 호출함. -> NaN
 
addNum(1);       // 인수로 1을 전달하여 함수를 호출함. -> NaN
 
addNum();        // 인수로 아무것도 전달하지 않고 함수를 호출함. -> NaN(전달되지 않은 나머지 값이 자동으로 indefined 값으로 설정되어 산술 연산을 수행하수 없기 때문)
cs

http://www.tcpschool.com/javascript/js_function_parameterArgument

'이노베이션 자바스크립트 회고' 카테고리의 다른 글

자바스크립트의 변수 타입  (0) 2022.08.10
연산자  (0) 2022.08.10
reduce(), map()  (0) 2022.08.10
자바스크립트 함수, 프로퍼티, 메서드  (0) 2022.08.10
22.08.06  (2) 2022.08.06

콜백함수란?

- '다른 함수의 매개 변수로 호출될 함수를 전달하고 특정 이벤트가 발생하고 나서 매개변수로 호출된 함수가 다시 호출 되는것을 의미' 입니다!

- 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행 할수도 있다

 

● reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서 함수를 실행하고 하나의 결과값을 반환한다

매개변수 : callback, initialValue

리듀스는 순회하고자 하는 배열에 붙음

 

REDUCE 매개함수안에 들어가는 매개변수 : previousvalue currentvalue currentindex array

리턴값 :  배열 각 요소에 대하여 reducer함수를 실행하고 하나의 결과값을 반환

리턴값의 TYPE :  acc에 따라서 string,interger 이 될수도있고 array나object가 될수도있다

 

리듀서 함수는 네개의 인자를 가진다

누산기(acc) 현재값(cur) 현재 인덱스(idx) 원본배열(src)

 

리듀서 함수의 반환값은 누산기에 할당되고 누산기는 순회 유지되므로 결국 최종결과는 하나의 값이 된다

그니까 누산기라는 반장이 반애들 돌면서 한장한장

cur이라는 숙제들을 거둬가면서 점점 숙제가 쌓이듯이  배열을 싹 돌면서 값을 누적이되는거임

 

const array = [2, 3, -5, 1]
 
const sum = array.reduce(function(acc,cur){
return acc + cur
});
 
또는
 
const sum1 = array.reduce((acc,cur) => acc + cur);
cs

 

배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값);

초깃값을 적어주지 않으면 0부터 시작

 

※reduceRight도 있는데 reduce와 동작은 같지만 요소 순회를 오른쪽에서부터 왼쪽으로 한다는 점이 차이

 

 

●map() 메서드는 반복문을 돌며 배열 안의 요소들을 1대1로 짝지어 준다

배열.map((요소, 인덱스, 배열) => { return 요소 });
cs

map 메서드는 위와 같이 사용

 

매개변수 : callbackFunction, thisArg
순회하고자 하는 배열에 붙는다

 

MAP의 매개함수에 들어가는 매개변수 : currentValue, index, array

리턴값 : 배열 각 요소에 주어진 함수를 수행한 결과를 모아 새로운 배열을 반환

리턴값의 TYPE : 배열

 

 

callbackFunction 의 매개변수 : 현재값, 인덱스, 배열

 

 

 

const oneTwoThree = [1, 2, 3];
let result = oneTwoThree.map((num) => {
 console.log(num);
 return num;
});
// 콘솔에는 1, 2, 3이 찍힘
oneTwoThree; // [1, 2, 3]
result; // [1, 2, 3]
oneTwoThree === result; // false
cs

반복문으로 요소를 순회(1, 2, 3 순서로)하면서 각 요소를 어떻게 짝지어줄지 알려준다 함수가 그냥 return num를 하기 때문에 같은 값을 그대로 찍는다

map을 실행하는 배열과 결과로 나오는 배열이 다른 객체이다 기존 배열을 수정하지 않고 새로운 배열을 만듬

그니까 map은 배열을 1대1로 짝짓고 기존 객체를 수정하지 않는 메서드

배열 안에 객체가 들어있는 경우에는 공유

 

 

result = oneTwoThree.map((num) => {
 return num + 1;
});
result; // [2, 3, 4]
cs

배열에 각각 1 더하기

result = oneTwoThree.map((num) => {
 if (num % 2) {
    return '홀수';
  }
  return '짝수';
});
result; // ['홀수', '짝수', '홀수']
cs

규칙적인 배열만 반환할 수 있는게 아니라  함수 안에 적어준대로 반환할 수 있기 때문에 자유도가 높음

 

arr.map(Number) 실행 가능?불가능?

가능! map() 메서드는 배열내의 요소전부에 각각 주어진 함수를 호출하고 결과를 모아 새러운 배열을 반환한다

 

 

구글링 했을때 예제가 더하기로 많이 나와서 그렇지

더하기 곱하기만 하는게 아님

 

배열의 메서드인 map,sort, every, some, find, findIndex, includes 이런애들도 reduce로 구현 가능

 

https://www.zerocho.com/category/JavaScript/post/5acafb05f24445001b8d796d

 

 

'이노베이션 자바스크립트 회고' 카테고리의 다른 글

연산자  (0) 2022.08.10
매개변수  (0) 2022.08.10
자바스크립트 함수, 프로퍼티, 메서드  (0) 2022.08.10
22.08.06  (2) 2022.08.06
22.08.05  (0) 2022.08.05

객체는 케이스를 이루는 말이다

실제 객체를 완성하는 구성품들은

데이터를 의미하는프로퍼티와

데이터를 참조하고 조작할 수 있는 동작(behavior)을 의미하는메서드입니다.

 

함수(function)

object type중의 하나로서 반복하여 사용되는 독립된 명령(subroutine)

반복하여 사용되는 독립된 명령이라는 점에서는 다른 언어와 유사하지만, Javascript에서 함수(function)는  독립된 정의가 아닌 객체(object)의 일종으로 여겨진다는 점에서 다르다.

즉,  함수(function)도 객체(object)로 취급된다.

 

프로퍼티(property)

클래스 내부에 만드는 변수를 프로퍼티 라고 부름. (멤버변수 라고도 함)

프로퍼티에는 주로 객체 내부에서 사용하는 일반적인 정보와 객체 내부 함수(메서드) 에서 처리한 결과값이 저장.

-> OOP(객체 지향 프로그래밍)에서 흔히 말하는 getter/setter 'method'의 역할을 수행하면서 마치 데이터 멤버(필드)에 접근하듯이 사용할 수 있는 class member

 

‘키(key)와 값(value)이 연관된 객체(object)의 부분’
이를 풀어보면, 객체 내에서 선언된 변수()를 의미한다고 볼 수 있다.
다른 언어와의 차이점은, 다른 언어에서는 배열 내부에 있는 값들을 요소()라고 부르지만 Javascript에서는 배열 또한 객체로 표현되기 때문에 요소와 Property는  Javascript에서 사실상 동일하다.

 

메서드는 클래스 및 객체(object)와 연관되어 있는 함수라는 것입니다. 클래스 내에 선언되어 있는 함수가 바로 메서드입니다. 즉, 클래스 및 객체와 연관되어 있는 것이라면 메서드고, 그것들과 상관없이 독립적으로 존재하는 것은 함수입니다. 함수가 메서드보다 더 큰 개념이라고 생각할 수 있습니다. 그래서 메서드를 부를 때 포괄적으로 함수로 지칭하기도 합니다.

함수는 sum(), abs() 같이 독립적으로 사용되는 반면, 메서드는 a라는 객체가 존재할 때 a.upper(), a.lower()와 같은 형태로 사용됩니다.

https://bskyvision.com/entry/python-%ED%95%A8%EC%88%98function%EC%99%80-%EB%A9%94%EC%84%9C%EB%93%9Cmethod%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EA%B0%84%EB%8B%A8-%EC%84%A4%EB%AA%85

 

[python] 함수(function)와 메서드(method)의 차이, 간단 설명

프로그래밍 언어에 있어서 함수(function)라는 것은 어떠한 기능을 수행하는 친구입니다. 각 함수마다 나름의 기능을 가지고 있습니다. 두 수를 입력받아 덧셈을 수행하는 함수가 있을 수 있고, 소

bskyvision.com

 

 

'이노베이션 자바스크립트 회고' 카테고리의 다른 글

연산자  (0) 2022.08.10
매개변수  (0) 2022.08.10
reduce(), map()  (0) 2022.08.10
22.08.06  (2) 2022.08.06
22.08.05  (0) 2022.08.05

 

 

9. 핸드폰 번호 가리기
● 전화번호를 뒤에서 4자리를 제외한 나머지 숫자를 *로 바꾸기
○ 숫자를*로 변환하고 index로 뒤에서 4자리까지만 예외처리 

10. 행렬의 덧셈
● 2개의 행렬 arr1과 arr2를 입력받아 덧셈의 결과를 반환시키기
○  감이 안오는데 구글링을 해봐야겠음!


11. x만큼 간격이 있는 n개의 숫자
● x부터 시작을 해서 x씩 n번 증가
○ for (let i = x; i<n.length; i++) 

12. 부족한 금액 계산하기



13. 2016년
● a월 b일 의 요일을 변환시켜주기
○ 감이 안오는데 구글링을 해봐야겠음!



●변수
자바스크립트에서는 데이터를 저장하는 공간을 변수라고 한다
변수 공간을 생성한는 방법 : 
num = 3;
1. 적절한 이름을 지어준다
2. 마지막에 세미콜론(;)을 찍어준다
3. num이라는 변수 공간이 생성되고 3이라는 값이 들어간다
변수라는 공간을 생성하기 위해 이름을 지워주는것은 "변수를 선언한다"라고 하고
선언된 변수에 값을 넣는행위를 "데이터를 할당한다"라고함
console.log(num);
변수=변할수있는 수
num = 3;
console.log(num);
num = 10;
console.log(num);
 을 입력하면 3,10둘다 찍힘

●데이터
데이터 = 값과 값의 유형(value와 type)을 합친 용어

●암시적 선언
변수를 선언하는 방법을
var, let const를 사용하지않고 변수를 선언하는것
●명시적 선언
var, let, const를 사용해서 선언하는것
var num = 3;

●var, let, const
var : 자바스크립트 초창기 변수선언 키워드 - 중복선언 가능
let : 중복선언 불가능 - (^)표시로 체크해주면서 에러 발생
const : 중복선언 불가능 - let과 동일 대신 let과 다른 한점이 있는데 
let은 변수에 할당된 데이터가 변경이 되는데 const는 불가능
let num = 10;
console.log(num);
num = 20;
console.log(num);
출력하면 10,20이 나옴
const는 에러가 뜸

var,let은 변수라 불림
const는 변수가 아니라 상수로 불림(변하지가 않기때문에)

●카멜케이스
변수 이름은 카멜케이스 방식으로 작성해야함
카멜케이스란 단어의 첫 글자는 소문자인데 연결된 단어의 첫글자는 대문자로 작성
let userName = "ㅇ쩌고 저쩌고";

●변수 이름은 문자,_,$ 로만 시작 가능 숫자로시작하거나 다른 특수문자는 불가능

●상수나 축약어는 대문자로 작성 스네이크방식으로 작성
●띄어쓰기는 '_'로 작성
변수로는 변수로 쓸수없음
const var = 'asdas' 이러면 안됌

[[ㄴㅁㅇ][ㅁㄴㅇ][ㅁㄴㅇ]] 다중리스트,2차원배열

 

let, const를 사용하면 var을 사용할때보다 상당히 이점이 많다
두개의 공통점은 var과는 다르게 변수 재선언이 불가능하다

let, const의 차이점은 변수의 immutable여부이다
let은 변수에 재할당이 가능하지만 const는 변수 재선언,재할당이 모두 불가능하다

let,const가 추가되기 전까지는 var만 사용되었다

https://gist.github.com/LeoHeo/7c2a2a6dbcf80becaaa1e61e90091e5d

 변수(variable)는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.

- 변수란?

가변적인 데이터를 담을 수 있는 대상 혹은 공간

- 변수가 필요하는 이유?

프로그램에서 가독성을 높여주고⬆️ 유지보수에 좋다.
복잡한 코드를 변수 안에 저장하면, 필요할때 변수명을 불러서 데이터 값을 불러낼 수 있다

- 변수를 선언하는 방법

선언 (declare)
 var, const, let

할당

변수에 값을 할당 할 때에는 할당 연산자(=)를 사용한다.

- var 문제점

변수 중복 선언 가능으로 , 예기치 못한 값을 반환

함수 레벨 스코프를 인해 함수 외부에서 선언한 변수는 모두 전역 변수로 된다

변수 선언문 이전에 변수를 참조하면 언제나 undefined를 반환된다.

- 해결방안

let, const 사용

JS 맨 윗줄에 ‘use strict’ 선언 후 사용

https://velog.io/@alicia-mkkim/TlL-4-%EB%B3%80%EC%88%98%EA%B0%80-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0%EC%99%80-%EC%84%A0%EC%96%B8%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

리듀서 함수는 네 개의 인자를 가집니다.

누산기 (acc) 데이터 레지스터로 처리 결과를 임시로 보유하는 역할 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sunnytop89&logNo=110122289854
현재 값 (cur)
현재 인덱스 (idx)
원본 배열 (src)

reduce 함수는 *반복 가능한 객체(iterable object) 내 각 요소를 연산한 뒤 이전 연산 결과들과 누적해서 반환해 주는 함수입니다.
*반복 가능한 객체(iterable object)란 말 그대로 반복이 가능한 객체로서 요소가 하나의 객체에 여러 개가 들어있고, 한 번에 하나의 요소씩 사용할 수 있는 객체를 말합니다. 대표적으로는 문자열(string), 리스트(list), 딕셔너리(dictionary), 세트(set)가 있습니다.
참고로 파이썬3부터는 reduce가 내장 함수가 아니기 때문에 functools 모듈에서 reduce 함수를 불러와야 합니다.


문자열의 길이가 홀수일 때 2로 나누면 나눈 값은 소숫점이 될 것이다. 그러므로 나눈 값에 Math.floor()메서드를 사용해 반내림을 해주어야 한다. 반올림이 아닌 반내림을 하는 이유는 인덱스는 0부터 시작하기 때문이다.

fuction 함수명(매개변수){
코드
return 리턴값
}


   parseInt(t1 / t2);    //몫
   parseInt(t1 % t2);   //나머지

==vs===
a = 1;
b = "1";
==은 숫자열인지 문자열인지 종류를 나누지 않고 1이면 true
===은 숫자열인지 문자열인지 종류에 대해서도 엄격함 false

에로우 함수 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

0이랑 nat a num 빈값 언디파인드 빈문자열 등은 항상 폴스

스트링 = 문자열


slice메소드★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
 s.slice (logic,logic+1) = (이상 미만) 

컨티뉴

for문에 in, of 차이는

array - ['a', 'b', 'c']
for (const i in array) //012 - 인덱스 (자체를 가져온다)
for (const i of array) // abc - 요소 (하나하나 가져온다)
for (let i = 0; i < array/length; i==) 는 of문이랑 같음

for in문


[2배  + 3배 + 4배 +5배...]
[*2    *3         *4    *5  ...]
price * 1,2,3,4,... count를 인덱스
카운트 까지의 배수를 각각 
price에 곱한후 더하기 (array.reduce)
하면 이용 금액이 나오고
(이용금액 - money) 삼항연사자를써서 
음수이면 부호를뺀 정수, 양수이면 0으로 반환





백준 사이트(단계별로 풀어보기)

+=는 오른쪽 피연산자의 값을 변수에 더한 결과를 다시 변수에 할당

'이노베이션 자바스크립트 회고' 카테고리의 다른 글

연산자  (0) 2022.08.10
매개변수  (0) 2022.08.10
reduce(), map()  (0) 2022.08.10
자바스크립트 함수, 프로퍼티, 메서드  (0) 2022.08.10
22.08.05  (0) 2022.08.05

직사각형 별찍기 

 

모르는것 투성이 이지만 우선 신기하고 맘에 드는것부터 기억하기 좋을거 같아서 쓴다!

 

1. 직사각형 별찍기

문제를 이해를 못했다.. 별을 5개씩 3줄로 만달라하면 될거를.. 물론 직사각형처럼 보이지만 이런게 왜 코딩문제에 나오는지는 아직도 잘은 모르겠다..

 

.split이 "."이나"@" 이런것만 나눠지는줄 알았는데 " " 이렇게 공백으로 나눌수도 있다

그리고 123 이렇게 붙어있는것도 나눌수 있는데 기억이 안난다 구글링 해봐야겠다

ans, .map col  구글링해봐야함

 

2. 짝수와 홀수

내가 만들진 않았지만 어디서 주워와서 이해는 다 했음!

function solution(num) { return (num % 2 === 0 ? "Even":"Odd") }

%는 나누기를 한후 나머지 이고 /는 몫이다 나는 홀수와 짝수를 구분하기 위해서 num이라는 값을 2로 나눈후 소숫점이 0일때와 아닌때로 구분을 했다 짝수면 0일테고 홀수면.5가 되니까!

 

그리고 삼항연산자라는걸 알게되었는데 이름이 왜인지 독특하고 간지나서 기억이 잘난다 

자바스크립트 삼항 연산자는 참/거짓에 따라 선택적으로 실행되는 조건문이다

조건문 ? 선택문1:선택문2 로 구성이 된다

이때 true일때 선택문 1 false일때 선택문2를 실행한다 

뭔가 쉽고 편리한 함수인거같다

 

==는 숫자열과 문자열여부와 상관없이 값이 같으면 true

===는 숫자열인지 문자열인지 동일해야 true

1; 과 '1';은 같은 1이지만

==는 true로 해석하고

===은 false라고 해석한다

https://velog.io/@daybreak/Javascript-%EC%82%BC%ED%95%AD%EC%97%B0%EC%82%B0%EC%9E%90

 

[Javascript] 삼항연산자

자바스크립트 삼항 연산자는 참/거짓에 따라 선택적으로 실행되는 조건문이다. 상항연산자는 조건문 ? 선택문1:선택문2 로 구성된다. 조건문이 참이면 선택문1을 실행하고, 조건문이 거짓이면

velog.io

3. 가운데 글자 가져오기

slice메소드★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
 s.slice (logic,logic+1) = (이상 미만) 

뭔가 엄청난 내용이었는데 기억이 잘 안난다 구글링 해야한다

 

4. 두 정수의 합

let sum = 0

let max = 0

let min = 0

 이부분이 신기했다 let을 여러개쓸수 있구나..

 

5. 문자열을 정수로 바꾸기

기억이 잘 안난다..

 

6.없는 숫자 더하기

오후에 볼일있어서 잠시 나갔다 오면서 뒤처진부분 따라잡겠다고 저녁 안먹었는데 지금 너무 배고파서 더 기억이 안난다..

 

7. 음양 더하기

이게 코드가 있어야 설명이 잘될거같은데

누산기 (acc) 데이터 레지스터로 처리 결과를 임시로 보유하는 역할

 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sunnytop89&logNo=110122289854
현재 값 (cur)
현재 인덱스 (idx)
원본 배열 (src) 이다 

 

8. 평균 구하기

발상의 전환으로 1,2,3,...100을 다 더하면 얼마인지 앎? 5050이다 어떻게 빨리 풀었냐고?

1,2,3...100을

100,99,98...1

이렇게 위아래로 더하고 나누기 2하면 됌! 초딩때 수학시간에 배운 그거임!

이걸 코드로 쓰면 엄청 빠르게 된다 그런데 이게 저 평균구하기 문제였나?뭐지

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

let, const를 사용하면 var을 사용할때보다 상당히 이점이 많다
두개의 공통점은 var과는 다르게 변수 재선언이 불가능하다

let, const의 차이점은 변수의 immutable여부이다
let은 변수에 재할당이 가능하지만 const는 변수 재선언,재할당이 모두 불가능하다

let,const가 추가되기 전까지는 var만 사용되었다

https://gist.github.com/LeoHeo/7c2a2a6dbcf80becaaa1e61e90091e5d

 변수(variable)는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.

- 변수란?

가변적인 데이터를 담을 수 있는 대상 혹은 공간

- 변수가 필요하는 이유?

프로그램에서 가독성을 높여주고⬆️ 유지보수에 좋다.
복잡한 코드를 변수 안에 저장하면, 필요할때 변수명을 불러서 데이터 값을 불러낼 수 있다

- 변수를 선언하는 방법

선언 (declare)
 var, const, let

할당

변수에 값을 할당 할 때에는 할당 연산자(=)를 사용한다.

- var 문제점

변수 중복 선언 가능으로 , 예기치 못한 값을 반환

함수 레벨 스코프를 인해 함수 외부에서 선언한 변수는 모두 전역 변수로 된다

변수 선언문 이전에 변수를 참조하면 언제나 undefined를 반환된다.

- 해결방안

let, const 사용

JS 맨 윗줄에 ‘use strict’ 선언 후 사용

https://velog.io/@alicia-mkkim/TlL-4-%EB%B3%80%EC%88%98%EA%B0%80-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0%EC%99%80-%EC%84%A0%EC%96%B8%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

리듀서 함수는 네 개의 인자를 가집니다.

누산기 (acc) 데이터 레지스터로 처리 결과를 임시로 보유하는 역할 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sunnytop89&logNo=110122289854
현재 값 (cur)
현재 인덱스 (idx)
원본 배열 (src)

reduce 함수는 *반복 가능한 객체(iterable object) 내 각 요소를 연산한 뒤 이전 연산 결과들과 누적해서 반환해 주는 함수입니다.
*반복 가능한 객체(iterable object)란 말 그대로 반복이 가능한 객체로서 요소가 하나의 객체에 여러 개가 들어있고, 한 번에 하나의 요소씩 사용할 수 있는 객체를 말합니다. 대표적으로는 문자열(string), 리스트(list), 딕셔너리(dictionary), 세트(set)가 있습니다.
참고로 파이썬3부터는 reduce가 내장 함수가 아니기 때문에 functools 모듈에서 reduce 함수를 불러와야 합니다.

'이노베이션 자바스크립트 회고' 카테고리의 다른 글

연산자  (0) 2022.08.10
매개변수  (0) 2022.08.10
reduce(), map()  (0) 2022.08.10
자바스크립트 함수, 프로퍼티, 메서드  (0) 2022.08.10
22.08.06  (2) 2022.08.06

+ Recent posts