source

함수를 정의하기 위한 const의 적절한 사용

nicesource 2022. 12. 4. 22:32
반응형

함수를 정의하기 위한 const의 적절한 사용

'를 사용하여 설정할 수 값의 요?constJavaScript, 히히 java java java java java java java?★★★★★★★★★★★★★★★★★?물론 효과가 있지만, 어떤 이유로든 나쁜 관행으로 간주되는 건가요?

const doSomething = () => {
   ...
}

ES6에서는 모든 기능을 이와 같이 정의해야 합니까?만약 그렇다면, 이것은 유행하고 있는 것 같지 않다.

당신이 한 일에는 문제가 없지만 함수 선언과 함수 표현식의 차이를 기억해야 합니다.

함수 선언, 즉 다음과 같습니다.

function doSomething () {}

스코프 상단으로 완전히 끌어올려집니다(및let ★★★★★★★★★★★★★★★★★」const

즉, 다음 기능이 작동합니다.

doSomething() // works!
function doSomething() {}

함수식. 즉, 다음과 같습니다.

[const | let | var] = function () {} (or () =>

함수 「 」 「 」 「 」 )의인가.function () {}변수 작성 및 해당 변수에 익명함수 할당)을 클릭합니다.

범위 내 은 블록 변수 범위 변수)입니다.let ★★★★★★★★★★★★★★★★★」const는 로 들어 .undefined블록 범위 상단으로 이동합니다.

이것은 다음을 의미합니다.

if (true) {
    doSomething() // will fail
    const doSomething = function () {}
}

doSomething정의되어 있지 않습니다.(이것으로 인해,ReferenceError)

「」를하고 있는 경우.var(highing)는 이 가 됩니다.undefined 의의 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a)TypeErrordoSomething.)

표준 프랙티스에 관한 한 항상 작업에 적합한 도구를 사용해야 합니다.

Axel Rauschmayer는 es6 의미론을 포함한 범위와 호이스트에 관한 훌륭한 게시물을 보유하고 있습니다.ES6에서의 변수 및 범위 지정

「 」를 사용하고 만,const기능을 정의하는 것은 해킹처럼 보이지만, 그것을 우월하게 만드는 몇 가지 큰 이점이 있다(내 생각에는).

  1. 함수를 불변하게 하기 때문에 다른 코드에 의해 그 함수가 변경될 염려가 없습니다.

  2. 짧고 깔끔한 팻 화살표 구문을 사용할 수 있습니다.

  3. 하면 이 문제를 해결할 수 .this당신을 위한 구속력.

를 제시하겠습니다.function

// define a function
function add(x, y) { return x + y; }

// use it
console.log(add(1, 2)); // 3

// oops, someone mutated your function
add = function (x, y) { return x - y; };

// now this is not what you expected
console.log(add(1, 2)); // -1

「」와 const

// define a function (wow! that is 8 chars shorter)
const add = (x, y) => x + y;

// use it
console.log(add(1, 2)); // 3

// someone tries to mutate the function
add = (x, y) => x - y; // Uncaught TypeError: Assignment to constant variable.
// the intruder fails and your function remains unchanged

이 질문이 나온 지 3년이 지났지만, 저는 지금 막 그것을 접하게 되었습니다.이 답변은 아직 미완성이기 때문에 다시 한 번 말씀드리겠습니다.

Q: 자바스크립트에서 const를 사용하여 설정할 수 있는 값, 특히 함수에 제한이 있는지 궁금합니다.이거 유효해요?물론 효과가 있지만, 어떤 이유로든 나쁜 관행으로 간주되는 건가요?

는 항상 사용하는 자바스크립트 코더를 보고 어떤 연구를 하게 되었다.const를 지정합니다.functions명확한 이유/편익이 없는 경우에도 마찬가지입니다.

"어떤 이유로든 나쁜 관행으로 간주됩니까?"라는 질문에 대해 IMO, 그렇습니다. 또는 적어도 사용에는 이점이 있습니다.function★★★★★★ 。

이것은 주로 취향과 스타일의 문제라고 생각합니다.위에 제시된 몇 가지 좋은 논거가 있지만, 이 기사에서처럼 명확한 논거는 없습니다.

계속 헷갈리는 점: medium.freecodecamp.org/Bill Sourour, JavaScript guru, 컨설턴트 및 teacher의 JavaScript 함수문을 사용하는 이유.

저는 여러분이 이미 결정을 내리셨더라도 그 기사를 읽으시기를 권합니다.

요점은 다음과 같습니다.

함수문에는 [const] 함수식에 비해 두 가지 분명한 이점이 있습니다.

장점 1: 명확한 의도

하루에 수천 줄의 코드를 스캔할 때 프로그래머의 의도를 가능한 한 빠르고 쉽게 파악할 수 있는 것이 유용합니다.

장점 2: 선언 순서 == 실행 순서

이상적으로는 코드가 실행되는 순서대로 선언하고 싶습니다.

이것은 showstopper입니다.const 키워드를 사용하여 선언된 값은 실행이 도달할 때까지 액세스할 수 없습니다.

위에서 설명한 것은 거꾸로 보이는 코드를 작성하도록 강요하고 있습니다.우리는 가장 낮은 수준의 기능부터 시작해서 우리의 방식으로 나아가야 한다.

내 뇌는 그런 식으로 작동하지 않는다.세부 사항보다 문맥을 먼저 알고 싶다.

대부분의 암호는 인간에 의해 작성된다.따라서 대부분의 사람들이 이해하는 순서는 대부분의 코드 실행 순서를 대략 따르는 것이 타당합니다.

에는 매우 .const그리고 어떤 사람들은 그것이 얼마나 신중하고 지시적인지 때문에 가능한 한 사용되어야 한다고 말할 것이다.

제가 알기로는 JavaScript에서 가장 시사적이고 예측 가능한 변수 선언이며, 제약이 있기 때문에 가장 유용한 변수 선언입니다. 왜일까요?왜냐하면, 이 방법에서는, 다음의 몇개의 가능성이 배제되기 때문입니다.var ★★★★★★★★★★★★★★★★★」let선언을 합니다.

글을 할 수 요?const? 이 글을 만으로도 다음 을 다 알수 있습니다const선언문 및 해당 변수에 대한 다른 참조를 검색하지 않고 다음을 수행합니다.

  • 값은 그 변수에 바인딩되어 있다(그 기본 객체가 깊이 불변하지는 않지만).
  • 바로 포함된 블록 밖에서는 액세스할 수 없습니다.
  • TDZ(Temporal Dead Zone) 규칙 때문에 선언 전에는 바인딩에 액세스하지 않습니다.

다음 인용문은 의 이점을 논하는 기사에서 인용한 것입니다.let ★★★★★★★★★★★★★★★★★」const에도 보다 할 수

에서 조건let ★★★★★★★★★★★★★★★★★」const코드를 이해하기 쉽게 하는 강력한 방법입니다.기술하는 코드에 가능한 한 많은 제약사항을 축적하도록 합니다.코드 조각이 의미하는 바를 제한하는 선언적 제약이 많을수록 미래에 인간이 코드를 읽고 해석하고 이해하는 것이 더 쉽고 더 빨라집니다.

아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, const이 아닌 선언var「」: 「」, 「TDZ」, 「TDZ」, 「TDZ」, 「TD」, 「TD」. 반에 whereas whereas.var이치그러나 규칙 계산은 많은 통찰력을 제공하지 않습니다.이 규칙들을 복잡성의 관점에서 따져보는 것이 더 낫다: 규칙은 복잡성을 더하는가 아니면 빼는가? const블록 스코핑TDZ는 선언 전에 사용 상황을 특정하기 위해 선언에서 스코프를 거꾸로 스캔할 필요가 없음을 의미합니다.할당 규칙은 바인딩이 항상 동일한 참조를 유지함을 의미합니다.

문장이 구속될수록 코드 조각은 단순해집니다.스테이트먼트의 의미에 제약을 가하면, 코드의 예측이 적어집니다.이것이 스태틱 타입의 프로그램이 일반적으로 다이내믹 타입의 프로그램보다 읽기 쉬운 가장 큰 이유 중 하나입니다.정적 타이핑은 프로그램 작성자에게 큰 제약을 주지만 프로그램을 해석하는 방법에도 큰 제약을 주므로 코드를 이해하기 쉬워집니다.

이런을 염두에 두고 사용하시는 .const가능한 한 생각할 수 있는 최소한의 가능성이 있는 문장이기 때문입니다.

출처 : https://ponyfoo.com/articles/var-let-const

효과가 없는 특별한 경우가 있습니다.

  1. 외부 API의 메서드를 변경하고 오브젝트의 참조가 필요한 경우.

  2. 「 」만의 가 있는 .function ::arguments,yield,bind기타 자세한 내용은 다음을 참조해 주세요.화살표 함수 식 제한

예:

을 이벤트 했습니다.Highcharts가 필요합니다. 라이브러리에서 실행한 거라서this키워드는 특정 오브젝트와 일치해야 합니다.

export const handleCrosshairHover = function (proceed, e) {
  const axis = this; // axis object
  proceed.apply(axis, Array.prototype.slice.call(arguments, 1)); // method arguments
};

기능 , ★★★★★★★★★★★★★★★★★★★★★★★」this범위와 obj에 수

export const handleCrosshairHover = (proceed, e) => {
  const axis = this; // this = undefined
  proceed.apply(axis, Array.prototype.slice.call(arguments, 1)); // compilation error
};

언급URL : https://stackoverflow.com/questions/33040703/proper-use-of-const-for-defining-functions

반응형