자바스크립트는 무조건 리턴이 있는 함수이다. 리턴을 선언 하지 않아도 undefined 값을 받음 리턴을 하는것과 안하는 구문을 구분해서 함수 와 프로시져로 구분하기도 한다. 자바스크립트는 함수만 있는데 프로시져 흉내를 낼수도 있다. throw 구문을 통해서 구현을 통해 retrun 값을 안보낼수도 있다. 함수안에 함수를 무한대로 부를수 없다(자바에 OOM) 자바스크립트에서는100번의 함수 중첩을 허용하지 않는다 함수는 call stack을 고려 해야 된다.
value, reference
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
const a = newNumber(3); const b = newNumber(3);
a == b;
a === b;
a+b;
const c = 3; const d = 3;
c==d;
call by reference, call by value
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
const a = newNumber(3);
a.test = function() { console.log('hello'); };
a.test(); // 공백을 두는 이유는 3. 로 찍으면 소수점으로 인식하기 때문에 // 아래는 되는것 처럼 보인다 박싱이 일어나서 3 .test = function() { console.log('???'); };
//value는 참조를 걸수 없기 때문에 안된다.
3 .test();
Larry Constantine(래리 콘스탄틴) - high coherence and low coupling(높은 응집도와 낮은 결합도)
content - 강결합
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
const A = class { constructor(v){ this.v = v; } };
const B = class { constructor(a){ this.v = a.v; } }; const b = newB(newA(3));