스터디

자바스크립트 질문 - 240430

민아! 2024. 4. 29. 21:03

 

1. 3번째 라인의 Lee를 왜 저렇게 쓰는지 모르겠습니다.

const person = (name => ({
	sayHi() {return `hi my name is $name`;}
}))('Lee');

console.log(person.sayHi()) // hi my name is Lee.

 

 

2. 함수에 나오는 this가 뭘 가리키는지 이해가 가지 않습니다. 

class Base {
	constructor(name) {
    	this.name = name;
    }
    
    sayHi() {
    	return `hi ${this.name}`;
    }
}

class Derived extends Base {
	// 화살표 함수의 super는 상위 스코프인 constructor의 super을 가리킨다.
	sayHi = () => `#{super.sayHi()}` how are you doing?;
}

const derived = new Derived('Lee');
console.log(derived.sayHi()); // hi Lee how are you doing?

 

 

3. call과 arguments를 모르겠습니다.

function sum() {
	// 유사 배열 객체를 배열로 변환
    var arr = Array.prototype.slice.call(arguments);
    console.log(arr); // [1, 2, 3]
    
    return arr.reduce(function (pre, cur) {
    	return pre + cur;
    }, 0);
}

console.log(sum(1,2,3)) // 6

 

 

4. this가 왜 나오는지 모르겠습니다. 

class Numbers {
	numberArray = [];
    
    multiply(arr) {
    	arr.forEach(function (item) {
        	this.numberArray.push(item * item);
        }, this);
    }
}

const numbers = new Numbers();
numbers.multifly([1, 2, 3]);
console.log(numbers.numberArray); // [1, 4, 9]

 

 

5. _ 의 의미를 모르겠습니다. 

new Promise(resolve => resolve('fulfilled'))
	.then(v => console.log(v), e => console.log(e); // fulfilled
    
new Promise((_, rejected) => reject(new Error('rejected')))
	.then(v => console.log(v), e => console.log(e); // error: rejected