JavaScript에서 블록 범위 변수 선언에 ‘let’이라는 이름이 선택된 이유는 무엇입니까? 왜 var그 이름을

나는 왜 var그 이름을 취하는 지 이해합니다 -그것은 가변적입니다 const-그것은 상수입니다. 그러나의 이름 뒤에 의미가 무엇 let입니까? 순리에 맡기다?



답변

Scheme 및 Basic과 같은 초기 프로그래밍 언어에서 채택 된 수학적 진술입니다. 변수는 더 높은 수준의 추상화에 적합하지 않은 저수준 엔티티로 간주되므로 Clojure, F #, Scala와 같이 유사하지만 더 강력한 개념을 도입하려는 많은 언어 디자이너의 요구에 let따라 값이나 할당 가능한 변수, 그러나 변경되지 않았으므로 컴파일러는 더 많은 프로그래밍 오류를 포착하고 코드를 더 잘 최적화 할 수 있습니다.

JavaScript는 var처음부터 가지고 있었기 때문에 다른 키워드가 필요 했고 가능한 한 let가까운 곳에 기존 키워드로 이미 사용되는 수십 개의 다른 언어에서 빌려 왔습니다 var. JavaScript let에서는 블록 범위 로컬 변수가 대신 생성됩니다.


답변

나는 그것이 수학적 전통을 따른다고 생각합니다. 수학에서는 종종 “x는 임의의 실수”또는 이와 비슷하다고합니다.


답변

에 추가 exebook의 반응 , 키워드의 수학 사용 하자 도 잘의 범위 지정 의미 캡슐화 let자바 스크립트 / ES6 사용할 때를. 특히 다음 ES6 코드 의 값을 인쇄 toPrint 할 때 중괄호로 할당을 인식하지 못하는 것처럼 'Hello World',

let toPrint = 'Hello World.';
{
    let toPrint = 'Goodbye World.';
}
console.log(toPrint); // Prints 'Hello World'

하자 공식화 수학 (증거 특히 쓰기)에서 사용 된 변수의 현재 인스턴스가 아니라 논리적 인 생각의 범위에 있다는 것을 나타냅니다. 다음 예에서 x는 새로운 아이디어를 입력하면 즉시 새로운 정체성을 얻으며 (보통 이들은 주요 아이디어를 증명하는 데 필요한 개념 임) 하위 증명이 끝나면 즉시 이전 x로 되돌아갑니다. 물론 코딩에서와 같이 다소 혼동되는 것으로 간주되므로 일반적으로 다른 변수에 다른 이름을 선택하면 피할 수 있습니다.

x를 그렇게 보자 …

  증거물

 새로운 아이디어 {x를 다른 것으로 보자 … 무언가를 증명해라} 새로운 아이디어를 맺다

 오래된 x로 주요 아이디어 증명


답변

var범위 차이로 정확히 무엇을 합니까? 이제는 var이미 사용되었으므로 이름을 사용할 수 없습니다 .

그래서 그것은 흥미로운 영어 구성에서 의미를 가진 다음으로 최고의 이름을 얻은 것으로 보입니다.

let myPet = 'dog';

영어로 “내 애완 동물이 개가되게하자”


답변

가장 가능성있는 가능성은 가장 관용적 인 선택이었습니다. 말하기는 쉬울뿐만 아니라 이해하기도 직관적입니다. 어떤 사람들은보다 더 논쟁 할 수 var있습니다.

그러나 나는 이것에 대한 역사가 조금 더 있다고 생각합니다.

에서 위키 백과 :

Dana Scott의 LCF 언어는 람다 미적분학을 현대적인 기능 언어로 발전시키는 단계입니다. 이 언어는 그 이후로 대부분의 기능적 언어로 등장한 let 표현을 도입했습니다.

ALGOL 및 Pascal과 같은 상태 전체 명령 언어는 기본적으로 let 구조를 구현하여 제한된 범위의 기능을 블록 구조로 구현합니다.

나는 이것이 let자바 스크립트 에서도 영감이되었다고 믿고 싶다 .


답변

var는 함수 범위 또는 전역 범위 인 반면보다 즉각적인 블록 수준의 제한된 범위를 사용합시다.

그것은 많은 다른 언어에서 BASIC과 같은 변수를 정의하기 위해 다른 많은 언어에서 발견 되었기 때문에 가장 많이 선택된 것으로 보입니다.


답변

나는 Scheme에 대한 JavaScript의 빚이 명백하다고 생각합니다. 체계에는 let뿐만 아니라 let *, let * -values, let-syntax 및 let-values도 있습니다. (4 번째 Ed. Scheme Programming Language 참조).

(이 선택은 JavaScript가 Lispy라는 개념에 더 많은 신뢰를 부여하지만, 우리가 제거하기 전에는 동음이 아닙니다.)))