2017-11-15 10 views
1

나는 약간의 작업을 위해 JavaScript를 읽고 있으며 흥미로운 부분을 찾았다. 좀 읽기를 수행하고 건너 온 한 : 가변 글로벌 - 글로벌없는 상태를 버블 링 범위에 VAR 퍼팅으로 VAR 유형 선언의 부족을 조명Javascript - 익명 함수가 형식 선언없이 선언 되었습니까? 로컬 범위를 지정해야합니까?

Is using 'var' to declare variables optional?

합니다.

예 :

여기
var foo = bar // locally scoped 
foo = bar // outer scope, can have global ramifications 

내 질문은 익명의 기능을 외부 범위 선언을 결합 할 때입니다,이 허용 무엇이 처리의 권장 방법이 될 것이다? 그것은 "좋은"대회인가? 로컬로 범위를 지정해야합니까? 그것은 내 목적을위한 수업의 내부에 있기 때문에 지역적 범위 이외의 다른 이유는 없습니다. 다시 한 번, JS 멍청한 놈, 그래서 통찰력을 찾고.

예 :

updateThing = (e) => { 
    this.state.items = e.target.value; 
} 

가 많은 감사 감사.

+2

IMO - 가능한 모든 것을 명확하게 정의하십시오. 코드가 작동 할 수도 있지만 새로운 개발자 나 1 년 내에이 코드를 찾는 사용자는 범위를 어디에서 참조하는지 검색하지 않아도 빨리 이해할 수 있습니다. 당신은 또한 귀찮은 범위의 호이스트를 칠 수도 있습니다. 정말로 당신의 바를 명확하게 정의하고 싶을 수도 있습니다. 저는 개인적으로 그것이 "좋은"대회라고 생각하지 않습니다. 그러나 누구든지 동의하지 않으면 왜 그런지 궁금합니다. – ajmajmajma

+0

@ajmajmajma 이것은 주로 내 것이고, 코드는 지역이 아닌 다른 범위에있을 것이라고 강조하는 주석이 없기 때문에 리팩터링과 로컬 스코프를 수행하면 어떻게되는지 질문하게됩니다. 나는 가능한 한 인간적으로 가능한 모든 것을 쓰는 팬입니다. 그래서 두 번째 추측은 없으므로, 그것을 PR하고 지역적으로 범위를 지정할 수 있습니다. 댓글 주셔서 감사합니다. –

+0

네가 이런 식으로 글을 쓰고 싶지 않은 이유는 네.죄송 합니다만 처리해야합니다! – ajmajmajma

답변

1

익명 함수는 타입 선언없이 선언

(export default 제외) 익명의 함수 선언이 없습니다. 가지고있는 모든 예제는 할당 자 또는 변수 선언에 초기자를 사용합니다.

외부 범위 선언을 익명 함수와 결합 할 때이를 수용 할 수 있으며이를 처리하는 데 권장되는 방법은 무엇입니까? 그것은 "좋은"대회인가?

아니요, 좋지 않습니다. 그냥하지 마. 어디에도 선언하지 않은 변수에는 할당하지 마십시오. 당신이 class 정의 몸을 의미하는 경우

그것은 내 목적

에 대한 클래스 내에 : 할당 구문은 experimental shortcut for property intialisations in the constructor있다. 특히 그것이 무엇을 의미하는지 모른다면 그것을 사용하지 마십시오.

class … { 
    constructor(…) { 
     … 
     this.updateThing = (e) => { 
      this.state.items = e.target.value; 
     }; 
    } 
    … 
} 

이것은 변수 할당이 아니며 선언과 전혀 관련이 없습니다.