-
23_11_16 JS공부정리개발공부/JavaScript 2023. 11. 16. 22:59
[코딩애플] Part 2
-rest 파라미터
function 함수2(...rest) { //rest 파라미터. 입력되는 파라미터들을 배열로 만들겠다는 의미console.log(rest);}
함수2(1,2,3,4,5); //[1, 2, 3, 4, 5]-argument와 차이점
arguments : 모든 파라미터를 배열에 담아줌
rest parameter : 그 자리에 오는 모든 파라미터를 배열에 담아줌function 함수2(a,b,...rest) {console.log(rest);}
함수2(1,2,3,4,5); //[3, 4, 5]1.함수 파라미터 자리에 붙으면 rest 파라미터
2.나머지 경우에는 spread operatorrest 파라미터 주의점
1.가장 뒤에 ...rest 를 써야함. 그 뒤에 다른 파라미터 못받음
2.두번 이상 못씀-default에 관한 문제
function 함수(a = 5, b = a * 2 ){console.log(a + b);}함수(undefined, undefined); //15. 파라미터에 값을 할당하지 않는것 = undefined이므로 default값들이 실행됨-데이터마이닝에 관한 문제
글자세기('aacbbb') 라고 입력하면 콘솔창에
{ a : 2, b : 3, c : 1 }
▲ 이렇게 출력해주는 글자세기() 라는 함수 만들기
function 글자세기(a) {let result = {};[...a].forEach(e => {if(result[e]>0) {result[e]++} else {result[e] = 1}})console.log(result);}
글자세기('aacbbb')1.primitive data type : 변수에 값이 그대로 저장됨
-그냥 문자와 숫자는 Primitive data type2.Reference data type : 데이터가 저기 있습니다~ 하는 화살표(참조)가 저장됨
-Array,Object는 변수에 값이 저장되는것이 아니라 reference가 저장됨var 어레이 = [1,2,3]*[1,2,3]이 어레이에 저장되는것이 아니라, [1,2,3]이 저기있어요~하는 화살표가 저장됨
-reference data type의 비교
var 이름1 = { name : '김' };var 이름2 = { name : '김' };
console.log(이름1 == 이름2) //false. 각각의 변수에는 객체가 아니라 객체로 향하는 화살표가 저장되어있기 때문-function안에서의 reference data 재할당
var 이름1 = { name : '김' };function 변경(obj){obj = { name : 'park' };}
변경(이름1); // {name : '김'}변경(var obj = 이름1); //파라미터의 작동방식. 파라미터를 넣는다는건 새로운 변수를 선언하는것과 같음이름1을 변경()함수에 넣는 순간 파라미터(obj)에 화살표를 복사한것과 같음 하지만 obj에 새로운 객체를 넣으면 새로운 화살표를 재할당한것과 같으므로 기존 화살표가 없어짐. -따라서 이름1은 그대로 {name : '김'}으로 남아있음.
이름1.name을 변경하고 싶으면 함수안에서 obj.name = "park" 으로 해야함.
-constructor(생성자 함수)문법
var student1 = { name : "kim", age : 15};function Student() { //constructor(대문자로 시작)this.name = 'kim' //this는 새로 생성되는 object를 뜻함(인스턴스, instance)this.age = 15}
let 학생1 = new Student(); //새로운 object를 생성후 변수에 할당학생1과 학생2는 참조관계가 아님. 새로운 객체를 만들어서 할당한것.(새로운 화살표 대입) .
function Student() { //constructor(대문자로 시작)this.name = 'kim'this.age = 15this.sayHi = function() {console.log("안녕하세요 "+this.name+"입니다."); //this.함수 방식으로 메서드도 입력가능}}
let 학생1 = new Student();학생1.sayHi();function Student(a) { //파라미터를 입력하여 객체를 가변적으로 생성가능this.name = athis.age = 15this.sayHi = function() {console.log("안녕하세요 "+this.name+"입니다.");}}
let 학생1 = new Student('ho'); //파라미터 입력으로 가변적 객체 생성let 학생2 = new Student('hi')console.log(학생1) // {name: 'ho', age: 15}console.log(학생2) // {name: 'hi', age: 15}'개발공부 > JavaScript' 카테고리의 다른 글
23_11_19 JS공부정리 (0) 2023.11.19 23_11_18 JS공부정리 (0) 2023.11.19 23_11_15 JS공부정리 (0) 2023.11.15 23_11_13 JS공부정리 (1) 2023.11.14 23_11_11 JS공부정리 (0) 2023.11.12