웹페이지를 만들기 위해서 html css javascript를 사용한다. 웹의 프레임을 만들기 위해서html을 디자인을 하기 위해서 css 웹의 동작을 정의 하기 위해서 javascript를 사용하는데 javascript를 html에 넣어서 실행하는 것도 가능하지만 html파일이 길어진다는 단점이 있다 이러한 단점을 해결하기 위해서 .js파일에 자바스크립트를 넣어서 사용하는 것이다. 다음과 같은 html파일이 있다. <!DOCTYPE html> <html> <script type="text/javascript"> console.log("Hello world!"); </script> <body> </body> </html> 이 경우의 출력은 이렇게 된다. 하지만 복잡한 페이지를 만들게 되면 코드와 html이 나눠져 있어야 가독성이 좋아 진다. 따라서 분리를 해보겠다. first.js파일에 원레 script테그 안에 있느 코드를 적고 이를 <script type="text/javascript" src="first.js"></script>로 로드하면 된다. 결과는 같다.
프로시저(procedure) vs 순수함수(pure function) c/c++로 시작한 입장에서 둘다 생소한 개념이다. 프로시저는 c/c++에서의 함수와 동일 하지만 이름이 다르기 때문에 혼동이 되었다. c/c++을 공부/개발 해본 사람이라면 우리가 return_type function_name (argument)로 만들었던 함수 이다. 물론 c언어의 함수에서 순수함수를 구현할수 있다. 단지 c언어에서는 프로시저와 순수함수를 구분하지 않고 둘다 함수라는 큰 단위로 이해한다. 순수함수(pure function)은 수학의미하는 함수 이다. 정의역과 치역이 있고 일대일 대응하는 경우 우리는 함수하고 할수 있다. 이제부터 c언어의 함수를 프로시저로 순수함수를 함수 라고 표기하겠다. 프로시저는 항상 같은 값을 리턴하지 않는다. (side effect가 존재할 가능성이 있다) 예를 들어서 프로시저 a에서 글로벌 변수의 값을 변경하는 경우가 있다. 이를 다른 곳에서 a가 값을 변경하지 안았을 것이라고 가정하고 프로그램을 짠다면 문제가 생길수 있다. ex) global var g_var = original; void a() { g_var = something; } main() { print(g_var); // original a(); print(g_var); // something } 사용자가 원하는 값이 original인데 프로시저a를 실행한 이후에는 something이라는 값이 들어가게 된다. 반면에 순수 함수에서는 side effect가 없다. 그리고 무조건 리턴 값이 있어야 한다. 때문에 어떤 함수a를 정의하고 아무리 호출해서 함수a가 리턴하는 값을 인자에 의해서만 결정된다. 그리고 다른 부분에 영향을 주지도 않는다. 그렇기 때문에 버그를 줄이는 것이 가능하다....