함수를 만들 때 파라미터값을 적지 않을 때
파라미터에 기본값(default 값)을 줄 수 있음
function hap(a, b = 10){ // b자리에 아무것도 없으면 default : 10
console.log(a+b)
}
hap(1); // b파라미터가 10을 가져고 11 출력
hap(1, 2); // 3출력
function hap2(a, b = 100*a){ // default에 연산도 사용가능
console.log(a+b)
}
hap2(1); // 101출력
function re(){
return 500;
}
function hap3(a, b = re()){ // default에 함수도 사용가능
console.log(a+b)
}
hap3(1); // 501출력
함수의 모든 파라미터들을 전부 한꺼번에 싸잡아서 다루고 싶은 경우 arguments 키워드를 활용
function func(a,b,c){
console.log(arguments)
console.log(...arguments); // 2 3 4
}
func(2,3,4);
콘솔창에 [2,3,4]를 담은 array 비슷한 자료가 출력됨

function func(a,b,c){
for (var i = 0; i < arguments.length; i++){
console.log(arguments[i])
}
}
func(2,3,4);
// 2
// 3
// 4
: rest 파라미터는 그 자리에 오는 모든 파라미터를 [ ]중괄호로 감싸준 파라미터
function func2(...restParams){
console.log(restParams)
for(let i=0; i<restParams.length; i++){
console.log(restParams[i])
}
}
func2(3, 4, 5)

function func3(a, b, ...restParams2){
console.log(restParams2)
for(let i=0; i<restParams2.length; i++){
console.log(restParams2[i])
}
}
func3(1, 2, 3, 4, 5, 6, 7);

restParams2라는 array가 됨function func(a, ...rest, b){
console.log(rest)
} // error
function 함수2(a, ...파라미터들, ...파라미터들2){
console.log(파라미터들)
}
// 1번
var a = [1, 2, 3];
var b = '김밥';
var c = [...b, ...a];
console.log(c);
// ["김", "밥", 1, 2, 3]
// 2번
var a = [1, 2, 3];
var b = ['you', 'are'];
var c = function(a, b){
console.log([[...a], ...[...b]][1])
}
c(a,b);
// you
// 3번
function func(a=5, b = a*2){
console.log(a+b); // 9
return 10
}
func(3)
// 4번
function func2(a=5, b=a*2){
console.log(a+b); // 15
}
func(undefined, undefined);
// 5번
function arr(...rest){
return rest
}
var newArray = arr(1, 2, 3, 4, 5);
console.log(newArray); // [1, 2, 3, 4, 5]
// 6번
var numbers = [2,3,4,5,6,1,3,2,5,5,4,6,7];
function max(numbers){
console.log(Math.max(...numbers));
}
max(numbers);
// 7
function sorttt(letter){
console.log([...letter].sort().join('')); //aber
console.log(...[...letter].sort()); //a b e r
}
sorttt('bear');
// 8번
function cnt(letter){
findcnt = [...letter];
var result = {}
findcnt.forEach((char)=>{
if(result[char] > 0){
result[char] = result[char]+1;
} else {
result[char] = 1;
}
});
console.log(result); // {a: 2, b: 2, c: 2, d: 7, f: 2}
}
cnt('aabbccdddddddff')
: 자료 자체가 변수에 저장되는 자료들
var name = 'john';
var age = 20;
: 자료를 변수에 직접 저장하는게 아닌, 자료를 가르키는 화살표 (레퍼런스)를 변수에 저장
var 사람 = { name : 'Kim' };
화살표가 저장 var name1 = '김'
var name2 = name1;
name1 = '박'
console.log(name1); //박
console.log(name2); // 김
var name3 = {name : '김'}
console.log(name3.name); // 김
var name4 = name3;
name3.name='박'
console.log(name3.name); // 박
console.log(name4.name); // 박
var name5 = {name : '김'}
var name6 = {name : '김'}
console.log(name5 == name6) // obj를 새로 할달 받았기 때문에false
var name7 = {name : '김'}
function change(obj){
obj.name = 'Park'
}
change(name7);
console.log(name7.name) // Park
var name8 = {name : '김'}
function chan(obj){
obj = {name : 'park'} // 새로운 변수를 만든 것임, 파라미터 변수 (var obj와 같은 것)
console.log(obj.name); // park
}
chan(name8)
console.log(name8.name); // 김