2009 년 12 월, ECMAScript는 ECMAScript 5를 출시했으며, 이는 이전 버전의 ECMAScript 3 표준에 대해 출시되었지만 JavaScript는 웹 프로그래밍에 있습니다. 이 언어의 복잡성 (즉, ECMAScript의 기능을 확장하기 위해 많은 수의 특성을 증가 시킬지 여부)와 죽음으로 인해 프로그래밍보다 크게 지연되는 새로운 ECMAScript 표준을 공식화했습니다. ECMAScript 5는 JSON의 지원과 반영에 대한 포괄적 인 제어를 제외하고는 목표 측면에서 그렇게 야심적이지 않습니다. 이 모드에서는 ECMAScript의 구문이 더욱 엄격 해져 필수 변수 선언 및 명령문이없는 비상장을 포함하여 더 이상 일반적으로 쉽게 만들기 쉬운 코드가 허용되지 않습니다. 이 모드는 매우 간단합니다. 스크립트 파일 또는 함수의 첫 번째 줄에 "Strict"를 추가하는 한 문자열을 사용할 수 있습니다.
나중에 2010 년에 나는 키워드의 결함에 대해 다음과 같이 논의하기 위해 짧은 기사를 썼다는 것을 알게되었습니다.
쐐기
오래 전, 고향 인 Ma Liang의 고향은 그의 이름의 이름을 따서 명명되었습니다. Ma Liang은 사임하지 않았지만 네 단어를 만들었습니다. 몇 년 후, 외국인이 이곳에 와서이 길에서 현지인을 막았습니다.
이것은 Shenma Road입니까?
예, 이것은 Shenma Road입니다.
당신도 모르십니까?
나는이 사람입니다. 어떻게 알 수 없는가.
이것은 Shenma Road입니까?
당신은 당신이 묻는 것을 알고 있습니다.
나는 이것이 Shenma Road라는 것을 모른다.
이것이 Shenma Road라고 말하지 않았습니까?
다시 말할 수 있습니까?
님프
그 후, 지역 주민들은 그해 Ma Liang의 의견을 기억하고 갑자기 깨달았습니다. Ma Liang이 말하는 것은 약어를 사용하지 않습니다.
질문
그의 중국인 친구 인 Wang Er, "나는 꿈이있다. 나는 다음날 Tom이 이웃을 파악하고 체포했다. 상점의 CCTV.
문제는 톰이 자신의 꿈을 말했을 때
a) 야심 찬 b) 야심 찬 c) 모호한 d)
오른쪽 angr은 b)와 c)입니다.
텍스트
고대와 현대 중국과 외국의 위의 두 가지 예는 때때로 반사가 모호성을 유발한다고 설명했다. 이것은 또한 JavaScript에도 존재합니다. 때로는 ::와 같은 긴 변수를 재생하는 것이 매우 번거 롭습니다.
ObjectWithLongName1.propty1 = value1;
ObjectWithLongname1.propty2 = value2;
ObjectWithLongName1.propty3 = value3;
ObjectWithLongName1.Method1 ();
그러나 명확한 이름은 프로그램의 가독성에 매우 중요합니다. 따라서 JavaScript는 진술을 제공합니다. 위의 예를 다시 작성할 수 있습니다.
다음과 같이 코드 코드를 복사하십시오.
with (objectwithlongname1) {{
propty1 = value1;
propy2 = value2;
propy3 = value3;
방법 1 ();
}
이로 인해 키보드에 많은 쿵푸가 절약되며 프로그램의 구조가 더 명확 해집니다. 그러나이 약어는 모호함을 소개합니다. JavaScript의 분석 규칙은 ObjectwithLongname1에서 이러한 이름의 속성을 찾는 것입니다. 이것이 코드로 설명되는 것입니다.
다음과 같이 코드 코드를 복사하십시오.
if (ObjectwithLongName1.property1! == undefined) {
if (objectwithLongName1.Value1! == undefined) {
ObjectWithLongname1.property1 = ObjectWithLongName1.Value1;
} 또 다른 {
ObjectWithLongname1.property1 = value1;
}
} 또 다른 {
if (objectwithLongName1.Value1! == undefined) {
propertion1 = ObjectWithLongName1.Value1;
} 또 다른 {
property1 = value1; // 아마도 4
}
}
우리가 원하는 것은이 네 가지 가능성 중 하나이지만, 조심하지 않으면 프로그램은 또 다른 가능성을 실행합니다. 또한, 이러한 글쓰기 방식은 프로그램의 독자를 해결하기가 매우 어렵습니다. 반면 에이 불확실성은 JavaScript 통역사의 언어 성능에도 영향을 미칩니다.
실제로, 작은 개선을 제거 할 수있는 한, 이러한 결함을 제거 할 수 있습니다. 객체의 속성 앞에 포인트 번호를 추가하여 속성과 외부 변수 사이에 직관적 인 차이가있게되며이를 수행하는 다른 많은 언어가 있습니다. 우리의 초기 예는 다음과 같습니다.
다음과 같이 코드 코드를 복사하십시오.
with (objectwithlongname1) {{
.propty1 = value1;
.propty2 = value2;
.propty3 = value3;
.method1 ();
}
JavaScript가 그러한 개선을하기 전에, 두 개의 유해한 힘은 가볍고, 우리는 가능한 한 많은 문을 사용하지 않도록 노력해야합니다. 우리는 여전히 몇 가지 변화 방법을 채택 할 수 있습니다.
다음과 같이 코드 코드를 복사하십시오.
var O1 = ObjectWithLongName1;
o1.prpty1 = value1;
o1.prpty2 = value2;
o1.prpty3 = value3;
o1.method1 ();
또는이 상황에 대해 :
ObjectWithLongName1.propty1 = ObjectWithLongName2.propty1;
ObjectWithLongName1.propty2 = ObjectWithLongName2.propty2;
님프
ObjectWithLongName1.propty10 = ObjectWithLongName2.propty10;
다음과 같이 쓸 수 있습니다.
다음과 같이 코드 코드를 복사하십시오.
(기능 (O1, O2, PL) {
pl.foreach (function (it) {o1 [item] = o2 [item];});
}) (ObjectWithLongName1, ObjectWithLongName2, [ 'propty1', 'propty2', ..., 'propty10'));