다음과 같은 함수를 만들었습니다.
function saveItem(andClose = false) {
}
Firefox에서 잘 작동합니다.
IE에서는 콘솔에 다음 오류가 발생합니다.
Expected ')'
Chrome에서는 콘솔에 다음 오류가 표시됩니다.
Uncaught SyntaxError: Unexpected token =
두 브라우저 모두 오류의 원인을 함수 생성 줄로 표시합니다.
답변
이 작업을 수행 할 수는 없지만 대신 다음과 같은 작업을 수행 할 수 있습니다.
function saveItem(andClose) {
if(andClose === undefined) {
andClose = false;
}
}
이것은 종종 다음과 같이 축약됩니다.
function setName(name) {
name = name || 'Bob';
}
최신 정보
위의 내용은 ECMAScript <= 5에 해당됩니다. ES6는 기본 매개 변수 를 제안했습니다 . 따라서 위의 내용은 다음과 같이 읽을 수 있습니다.
function setName(name = 'Bob') {}
답변
이것은 유효한 ECMAScript 구문은 아니지만 언어 구현에 추가하는 Mozilla의 상위 기능 집합에 대한 유효한 구문입니다.
기본 매개 변수 할당 구문은 ECMAScript 6에서 제공 될 것입니다.
답변
자바 스크립트는 “기본”지정자를 허용하지 않습니다.
원하는 작업을 빠르게 수행하는 방법은 다음과 같습니다.
function saveItem(andClose = false) {
}
다음에 :
function saveItem(andClose) {
// this line will check if the argument is undefined, null, or false
// if so set it to false, otherwise set it to it's original value
var andClose = andClose || false;
// now you can safely use andClose
if (andClose) {
// do something
}
}
답변
제공 한 코드는 Chrome <버전 49에서 실행되지 않습니다 :
https://kangax.github.io/compat-table/es6/#test-default_function_parameters
유효한 ECMAScript 2015 구문을 사용했습니다.
제 생각에 ES2015 기능을 사용하는 가장 좋은 방법은 Babel 을 사용하여 ES2015를 ES5로 트랜스 컴파일 하는 단계와 함께 Browserify 또는 WebPack에 자산을 번들링 하는 것입니다 . 그러면 ES2015 브라우저 호환성 차트에 대해 걱정할 필요가 없습니다. 처음 시작하는 것은 고통 스럽지만 그만한 가치가 있습니다.
답변
귀하의 경우 변수가 부울인지 확인하는 다른 대안이 있습니다.
function saveItem(andClose) {
var andClose = true == andClose;
// ...
}
기본값은 undefined
, 및 true == undefined
=> false
이므로 기본값은 false
:)입니다.