programing

Javascript 함수 및 기본 매개 변수, IE 및 Chrome에서 작동하지 않음

bestprogram 2023. 8. 25. 23:48

Javascript 함수 및 기본 매개 변수, IE 및 Chrome에서 작동하지 않음

다음과 같은 기능을 만들었습니다.

function saveItem(andClose = false) {

}

파이어폭스에서 잘 작동합니다.

IE에서 콘솔에 다음 오류가 표시됩니다.Expected ')'

Chrome에서는 콘솔에 다음 오류가 표시됩니다.Uncaught SyntaxError: Unexpected token =

두 브라우저 모두 오류의 원인을 함수 생성 줄로 표시합니다.

이렇게 할 수는 없지만 대신 다음과 같은 작업을 수행할 수 있습니다.

function saveItem(andClose) {
   if(andClose === undefined) {
      andClose = false;
   }
}

이것은 종종 다음과 같은 것으로 단축됩니다.

function setName(name) {
  name = name || 'Bob';
}

갱신하다

위의 내용은 ECMA스크립트 <= 5에 해당합니다. ES6에서 기본 매개 변수를 제안했습니다.따라서 위의 내용은 다음과 같습니다.

function setName(name = 'Bob') {}

올바른 ECMA스크립트 구문은 아니지만 Mozilla의 언어 구현에 추가하는 기능의 상위 집합에 대한 올바른 구문입니다.

ECMA스크립트 6에는 기본 매개 변수 할당 구문이 있을 수 있습니다.

Javascript에서 "기본" 지정자를 허용하지 않습니다.

원하는 작업을 신속하게 수행할 수 있는 방법은 다음과 같습니다.

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에서 실행되지 않습니다.

올바른 ECMA스크립트 2015 구문을 사용했습니다.

ES2015 기능을 사용하는 가장 좋은 방법은 Babel을 사용하여 ES2015를 ES5로 변환하는 단계와 함께 Browserify 또는 WebPack과 함께 자산을 번들하는 것입니다.이렇게 하면 ES2015 브라우저 호환성 차트에 대해 걱정할 필요가 없습니다.처음 시작하는 것은 고통스럽지만 그럴 가치가 있습니다.

이 경우 변수가 부울 변수인지 확인할 수 있는 다른 방법이 있습니다.

function saveItem(andClose) {
  andClose = true == andClose;
  // ...
}

기본값은 입니다.undefined,그리고.true == undefined=>false기본값은 다음과 같습니다.false:)

언급URL : https://stackoverflow.com/questions/15178700/javascript-functions-and-default-parameters-not-working-in-ie-and-chrome