JavaScript function
은 매개변수 값parameter values (arguments:인수)에 대해 어떤 검사도 하지 않습니다.
함수(functions)는 매개변수(parameters)를 가질 수 있습니다:
function functionNmae(parameter1, parameter2, parameter3) { // code to be executed }
함수 매개변수(parameters)는 함수 정의에 나열된 이름(manes)입니다.
함수 인수(arguments)는 함수에 전달되고, 함수가 받는 실제 값(values)입니다.
JavaScript 함수 정의는 매개변수에 대한 데이터 유형을 지정하지 않습니다.
JavaScript 함수는 전달된 인수에 대해 유형 검사를 수행하지 않습니다.
JavaScript 함수는 수신된 인수의 수를 확인하지 않습니다.
누락된 인수missing argument(선언된 것보다 작음)를 사용하여 함수를 호출하면, 누락된 값이 undefined
로 설정됩니다.
때로는 이것이 허용되지만, 때로는 매개변수에 기본 값을 지정하는 것이 더 좋습니다.
<!DOCTYPE html> <html> <body> <p>Setting a default value to a function parameter.</p> <p id="demo"></p> <script> function myFunction(x, y) { if (y === undefined) { y = 2; } return x * y; } document.getElementById("demo").innerHTML = myFunction(4); </script> </body> </html>
ECMAScript 2015는 함수 선언에서 기본 매개변수 값을 허용합니다:
<!DOCTYPE html> <html> <body> <p>Setting a default value to a function parameter (y=2).</p> <p id="demo"></p> <script> function myFunction(x, y = 2) { return x * y; } document.getElementById("demo").innerHTML = myFunction(4); </script> </body> </html>
JavaScript 함수에는 arguments 오브젝트라는 내장 오브젝트가 있습니다.
인수 오브젝트에는 함수가 호출(적용) 될 때 사용된 인수의 배열이 포함됩니다.
이렇게 하면 예를 들어 함수를 사용하여 숫자 목록에서 가장 높은 값을 찾을 수 있습니다.
<!DOCTYPE html> <html> <body> <p>Finding the largest number.</p> <p id="demo"></p> <script> function findMax() { var i; var max = -Infinity; for (i = 0; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; } document.getElementById("demo").innerHTML = findMax(4, 5, 6); </script> </body> </html>
또는 모든 입력 값(input values)을 합산하는 함수를 만듭니다.
<!DOCTYPE html> <html> <body> <p>Sum of all arguments:</p> <p id="demo"></p> <script> function sumAll() { var i; var sum = 0; for (i = 0; i < arguments.length; i++) { sum += arguments[i]; } return sum; } document.getElementById("demo").innerHTML = sumAll(1, 123, 500, 115, 44, 88); </script> </body> </html>
함수가 너무 많은 인수 (선언된 것보다 많음)로 호출되면, 이러한 인수는 the arguments object를 사용하여 도달할 수 있습니다.
함수 호출에서, 매개변수는 함수의 인수입니다.
JavaScript 인수는 값(value)으로 전달됩니다: 함수는 인수의 위치가 아닌 값만 알 수 있습니다.
함수가 인수의 값을 변경하더라도, 매개변수의 원래 값은 변경하지 않습니다.
인수에 대한 변경 사항은 함수 외부에서 표시 (반영)되지 않습니다.
JavaScript에서, 오브젝트 참조는 값입니다.
이 때문에, 오브젝트는 참조로 전달되는 것처럼 동작합니다.
함수가 오브젝트 속성을 변경하면, 원래 값이 변경됩니다.
오브젝트 속성에 대한 변경 사항은 함수 외부에서 볼 수 있습니다 (반영).