node.js 함수, 배열, 펼침연산자, ...

limchard·2023년 12월 7일
0

node.js

목록 보기
3/7

함수

  • 함수 parameter값에 바로 입력 가능,
  • 명확하게 값을 지정 안해주면 undefined 라고 출력된다.
// 함수 파라메타 기본값 담기
function func1(x,y=200,z=300){
    console.log(x,y,z);
}

func1();
func1(3,4,5);
func1(100);
func1(3,4);
func1();

function func2(a,b){
    return a+b;
}
console.log(func2(5,6));

콘솔

undefined 200 300
3 4 5
100 200 300
3 4 300
undefined 200 300
11

배열 포함

let arr=[3,5,9];
let r2=func2(arr[0],arr[1]);
console.log(r2); // 8 //3+5

콘솔

8

펼침연산자(...)

es6(EcmaScript6)에서 추가된 기능으로 배열 안의 값들을 다 불러온다.

func1(...arr);
func1(arr[0],arr[1],arr[2]); // 위의 ...arr 과 같음

콘솔

3 5 9
3 5 9

배열을 바로 parameter 값으로 넣을 때

func1(arr); // 빈값 x 자리에 arr 배열이 통으로 들어감

콘솔

[ 3, 5, 9 ] 200 300

펼침연산자를 parameter 값으로 받을 시에

let r3=func2(...arr); 
// 함수인자 갯수와 배열 갯수가 맞는 것 까지만 나옴 3,5,9 에서 3,5 만 들어감
console.log(r3);

콘솔

8

배열 출력

let arr1=[2,4,6];
let arr2=[6,7];
let arr3=[11,12,...arr1,22,...arr2];

console.log(arr3.length); // 8
console.log(arr3);
console.dir(arr3);

let arr4=[...[100,200],...arr2];
console.log(arr4);

콘솔

8
[
  11, 12, 2, 4,
   6, 22, 6, 7
]
[
  11, 12, 2, 4,
   6, 22, 6, 7
]
[ 100, 200, 6, 7 ]
  • ... : 펼침연산자. 흐트러진 배열을 가져올때 사용한다.
function fsum(arr){
    let sum=0;

    // 방법 1
    // for(i=0;i<arr.length;i++){
    //     sum+=arr[i];
    // }

    // 방법2
    for(let a in arr){ // for~each 문이라고 생각하자.
        sum+=arr[a]; // a가 번지수의 순번(0 부터 시작) 이 들어가면서.. 위의 i 역할을 해준다. 
    }
    console.log("합계: "+sum);
}

fsum(arr3);

function func3(a,b,c,d,e){
    console.log(a,b,c,d,e);
}
func3(arr3);
func3(...arr3);

콘솔

합계: 70
[
  11, 12, 2, 4,
   6, 22, 6, 7
] undefined undefined undefined undefined
11 12 2 4 6

for in과 for of의 차이점

for in

  • for in은 iterable object라면 모두 반복의 대상이 됩니다.
  • prototype chain에 의해서 Array 객체가 foo 함수를 갖기 때문에 foo함수가 반복의 대상이 된 것 입니다.
  • arr배열의 각 원소를 임시 변수로 담을 value에는 몇 번 째 반복되고 있는지 Index가 담겨있습니다.

for of

  • for of는 prototype chain에 의한 프로퍼티는 신경쓰지 않습니다.
  • 따라서 순수한 arr배열의 원소만 출력합니다.
  • 반면 for of에서 value에는 실제 원소의 값만 순서대로 담깁니다.
profile
java를 잡아...... 하... 이게 맞나...

0개의 댓글