JavaScript 기능의 기본 매개 변수 값을 설정합니다
질문
JavaScript 함수가 기본값을 설정하는 선택적 인수를 갖고 값이 정의되지 않은 경우에 사용되지 않고 값이 전달되면 무시됩니다.루비에서는 이렇게 할 수 있습니다.
def read_file(file, delete_after = false)
# code
end
자바 스크립트 에서이 작업을 수행합니까?
function read_file(file, delete_after = false) {
// Code
}
답변
ES6 / ES2015에서 기본 매개 변수는 언어 사양에 있습니다.
function read_file(file, delete_after = false) {
// Code
}
그냥 작동합니다.
참조 : 기본 매개 변수 - MDN.
기본 함수 매개 변수는 가치 또는 정의되지 않은 값이 없으면 기본값으로 공식 매개 변수를 기본값으로 초기화 할 수 있습니다.
파괴를 통해 기본 이름 지정된 매개 변수를 시뮬레이션 할 수도 있습니다.
// the `= {}` below lets you call the function without any parameters
function myFor({ start = 5, end = 1, step = -1 } = {}) { // (A)
// Use the variables `start`, `end` and `step` here
···
}
Pre ES2015,
많은 방법이 있지만, 이것은 내가 선호하는 방법이기 때문에, 당신이 원하는 모든 것, 당신이 원하는 모든 것에, 당신이 원하는 모든 것을 상기 할 수 있습니다.(NULL == "OBJECT"))
function foo(a, b) {
a = typeof a !== 'undefined' ? a : 42;
b = typeof b !== 'undefined' ? b : 'default_b';
...
}
답변
function read_file(file, delete_after) {
delete_after = delete_after || "my default here";
//rest of code
}
이는 DELETE_AFTER의 값을 DELETE_AFTER에 지정합니다. 그렇지 않으면 캔트 _AFTER의 값이 그렇지 않으면 "내 기본값"문자열을 할당합니다.더 자세한 내용은 Doug Crockford의 언어 조사를 확인하고 운영자 섹션을 확인하십시오.
이 접근법은 FALES 값 I.E.E.E.E. FALSE, NULL, UNUTEFINED, 0 또는 ""을 전달하려는 경우 작동하지 않습니다.당신이 통과 할 거짓된 가치가 필요한 경우 Tom Ritter의 답변에서 메소드를 사용해야합니다.
기능에 대한 여러 매개 변수를 다룰 때 소비자가 객체에 매개 변수 인수를 전달 한 다음 이러한 값을 함수의 기본값이 포함 된 객체와 병합하는 것이 종종 있습니다.
function read_file(values) {
values = merge({
delete_after : "my default here"
}, values || {});
// rest of code
}
// simple implementation based on $.extend() from jQuery
function merge() {
var obj, name, copy,
target = arguments[0] || {},
i = 1,
length = arguments.length;
for (; i < length; i++) {
if ((obj = arguments[i]) != null) {
for (name in obj) {
copy = obj[name];
if (target === copy) {
continue;
}
else if (copy !== undefined) {
target[name] = copy;
}
}
}
}
return target;
};
쓰다
// will use the default delete_after value
read_file({ file: "my file" });
// will override default delete_after value
read_file({ file: "my file", delete_after: "my value" });
답변
나는 이것을 훨씬 더 간결하고 개인적으로 읽을 수있는 것처럼 간단한 것을 발견합니다.
function pick(arg, def) {
return (typeof arg == 'undefined' ? def : arg);
}
function myFunc(x) {
x = pick(x, 'my default');
}
답변
대답은 예입니다.실제로 기본 매개 변수를 지원하는 많은 언어가 있습니다.파이썬은 그 중 하나입니다 :
def(a, enter="Hello"):
print(a+enter)
괄호로 인한 파이썬 3 코드이지만 함수의 기본 매개 변수는 JS에서 작동합니다.
예를 들어, 귀하의 경우 :
함수 READ_FILE (file, deleteafter = false) { console.log (삭제됨); } READ_FILE ( "test.txt");
그러나 때로는 기본 매개 변수가 필요하지 않습니다.
다음과 같이 함수 시작 직후의 변수를 정의 할 수 있습니다.
함수 READ_FILE (파일) { var delexeAfter = false; console.log (삭제됨); } READ_FILE ( "test.txt");
내 예 모두에서 모두 동일한 것을 반환합니다.그러나 때로는 실제로 실제로 매우 고급 프로젝트처럼 유용 할 수 있습니다.
따라서 결론적으로 기본 매개 변수 값은 JS에서 사용할 수 있습니다.그러나 함수 시작 직후 변수를 정의하는 것과 거의 동일한 것입니다.그러나 때로는 여전히 매우 유용합니다.알아 낼 수 있듯이 기본 매개 변수 값은 함수 시작 직후의 매개 변수를 정의하는 표준 방식보다 1 줄이 된 표준 방식보다 1 줄입니다.
편집 : 그리고 이것은 중요합니다.이것은 IE에서 작동하지 않습니다.문서를 참조하십시오.따라서 IE로 "기능 맨 위에있는 변수 정의"방법을 사용해야합니다.기본 매개 변수는 IE에서 작동하지 않습니다.
답변
ES6 +를 사용하는 경우 다음과 같은 방법으로 기본 매개 변수를 설정할 수 있습니다.
기능 테스트 (foo = 1, bar = 2) { console.log (foo, bar); } 테스트 (5);// foo 덮어 쓰기, 막대는 기본 매개 변수로 유지됩니다
ES5 구문이 필요한 경우 다음과 같은 방법으로 수행 할 수 있습니다.
기능 테스트 (Foo, Bar) { foo = foo ||2; 바 = 바 ||0; console.log (foo, bar); } 테스트 (5);// foo 덮어 쓰기, 막대는 기본 매개 변수로 유지됩니다
위의 구문에서 또는 연산자가 사용됩니다.또는 오퍼레이터는 항상 오른손 사이드 값을 반환하지 않으면 true로 변환 할 수있는 경우 항상 첫 번째 값을 반환합니다.해당 인수가없는 함수가 호출되면 매개 변수 변수 (예제의 막대)는 JS 엔진에서 정의되지 않은 것으로 설정된 것으로 설정됩니다.정의되지 않은 것은 그런 다음 정의되지 않음을 false로 변환하므로 또는 연산자가 값 0을 반환합니다.
답변
그 솔루션은 JS에서 나에게 작동합니다.
function read_file(file, delete_after) {
delete_after = delete_after || false;
// Code
}
출처:https://stackoverflow.com/questions/894860/set-a-default-parameter-value-for-a-javascript-function
최근댓글