매개 변수가 함수에 제공되는지 테스트하는 방법은 무엇입니까?
선택적 매개 변수로 함수를 만들 수 있는지 궁금합니다.
예:
function parameterTest(test)
{
if exists(test)
{
alert('the parameter exists...');
}
else
{
alert('The parameter doesn\'t exist...');
}
}
따라서 호출 parameterTest()
하면 결과는 "매개 변수가 존재하지 않습니다 ..."라는 메시지가됩니다. 그리고 호출하면 parameterTest(true)
"매개 변수가 존재합니다 ..."를 반환합니다.
이것이 가능한가?
이것은 매우 빈번한 패턴입니다.
다음을 사용하여 테스트 할 수 있습니다.
function parameterTest(bool) {
if (bool !== undefined) {
그런 다음 다음 형식 중 하나로 함수를 호출 할 수 있습니다.
parameterTest();
parameterTest(someValue);
잦은 테스트 오류가 발생하지 않도록주의
if (!bool) {
제공되지 않은 값을 false
, 0
또는 에서 구별 할 수 없기 때문 ""
입니다.
function parameterTest(bool)
{
if(typeof bool !== 'undefined')
{
alert('the parameter exists...');
}
else
{
alert('The parameter doesn\'t exist...');
}
}
자바 스크립트에서 매개 변수를 제공하지 않으면 기본값은 undefined
.
브라우저 콘솔에서 또는 JSFiddle을 사용하여 쉽게 시도해 볼 수 있습니다 .
말했듯이 매개 변수의 존재를 확인할 수 있으며, 그런 식으로 매개 변수를 사용할 수 있는지 여부를 함수를 작성할 수 있습니다. 그러나 JavaScript Garden (훌륭한 리소스) typeof
은 출력이 거의 쓸모가 없기 때문에 대부분의 다른 경우에서 멀리 할 것을 권장합니다 ( typeof 의 결과 테이블 확인 ).
확인하는 가장 좋은 방법 : 매개 변수 가 정의 되지 않은 경우
function parameterTest(param) {
if (param !== undefined)
...
PARAM은 또한 변수 또는 함수 이름이 될 수
function parameterTest(p) {
if ( p === undefined)
alert('The parameter doesn\'t exist...');
else
alert('the parameter exists...');
}
null == undefined
사실이다
if (arg == null){
// arg was not passed.
}
코드 예 :
var button = document.querySelector("button");
function myFunction(arg){
if(arg == null){
alert("argument was not passed.");
} else {
alert("argument " + arg + " was passed.");
}
}
<button onclick="myFunction('foo');">click to fire function w arg</button>
<br><br>
<button onclick="myFunction();">click to fire function w/o arg</button>
나는 이것이 오래되었다는 것을 알고 있지만 이것이 내가 선호하는 확인 방법이고 함수에 기본값을 할당합니다.
function testParamFunction(param1, param2) {
param1 = typeof param1 === 'undefined' ? null : param1;
param2 = typeof param2 === 'undefined' ? 'default' : param2;
// exit if the required parameter is not passed
if (param1 === null) {
console.error('Required parameter was not passed');
return;
}
// param2 is not mandatory and is assigned a default value so
// things continue as long as param1 has a value
}
ReferenceURL : https://stackoverflow.com/questions/13019640/how-to-test-if-a-parameter-is-provided-to-a-function
'programing' 카테고리의 다른 글
실행에 사용중인 Java Maven 버전을 어떻게 파악하고 변경합니까? (0) | 2021.01.14 |
---|---|
내 속성 값을 내 모델 클래스의 다른 속성 값과 비교하는 사용자 지정 유효성 검사 속성 (0) | 2021.01.14 |
객체가 있는지 확인하는 방법 AWS S3 Node.JS SDK (0) | 2021.01.14 |
Jinja2 템플릿 엔진과 함께 AngularJS를 사용할 수 있습니까? (0) | 2021.01.14 |
Python의 단일 요소 목록에서 요소 만 가져 오나요? (0) | 2021.01.14 |