Program Club

Javascript 변수를 선언 할 때 var가 필요합니까?

proclub 2020. 12. 7. 21:05
반응형

Javascript 변수를 선언 할 때 var가 필요합니까?


중복 가능성 :
자바 스크립트 : 'var'를 사용하여 변수를 선택적으로 선언하고 있습니까?

자바 스크립트에서 변수를 만들 때 변수 이름 앞에 "var"를 추가해야합니까?

예를 들어 대신

var message = "Hello World!"

사용해도 되나요

message = "Hello World!"

?

Google Adsense와 같은 스크립트는 var를 사용하지 않습니다.

예:

google_ad_width = 160;
google_ad_height = 600;
google_color_border = "000000";
google_color_bg = "ffffff";

를 사용하여 변수를 선언하지 않으면 (현재 범위에서 명시 적으로 생성) var, let그렇지 const않은 경우 (비 엄격 모드에서) 암시 적 전역을 생성합니다.

전역은 서로 다른 함수가 서로의 변수를 덮어 쓰도록하는 환상적인 방법입니다 (즉, 코드를 유지 관리하는 데 어려움이 있습니다).

를 사용하는 경우 var변수의 범위는 현재 함수 (및 그 안에있는 모든 기능-함수를 중첩 할 수 있음)로 제한됩니다.

( const그리고 let대신 함수의 블록에 대한 범위의 상수와 변수이 변수는 통상적으로보다 더욱 쉽게 관리 할 수있게 var한다.)

Google Adsense는 스크립트를 두 개의 개별 부분 (로컬 및 원격)으로 분할하기 때문에 전역을 사용합니다. 더 깨끗한 방법은 원격 스크립트에 정의 된 함수를 호출하고 매개 변수를 전역 범위에서 선택하는 대신 매개 변수로 전달하는 것입니다.


현대 JS는 암시 적 전역을 금지하는 엄격 모드 로 작성해야합니다 (대신 최상위 수준에서 명시 적으로 선언하는 것을 선호하므로 변수 이름이 오타 될 때 우발적 인 전역이 방지 됨).


예, 항상 var.

사용하지 않으면 var두 가지 주요 단점이 있습니다.

  • 그 함수 내에서 정의되지 않은 함수 내 변수를 액세스하는 것은 인터프리터가 하나 발견 할 때까지 해당 이름을 가진 변수의 범위 체인을 조회하는 원인이 아니면 (을 통해 브라우저에서 액세스 할 수있는 전역 객체에 도달 할 window곳 것) 속성을 만듭니다. 이 전역 속성은 이제 모든 곳에서 사용할 수 있으며 잠재적으로 혼동을 일으키고 버그를 감지하기 어렵습니다.
  • 선언되지 않은 변수에 액세스하면 ECMAScript 5 엄격 모드에서 오류가 발생합니다.

또한 var전역 변수를 사용하지 않는 것은 using var:를 사용 하는 것과 정확히 동일하지 않습니다 .를 사용 var하면 전역 객체에 생성되는 DontDelete속성 은 내부 속성을 갖습니다 . 이는 다음이없는 경우는 아닙니다 var.

// Next line works in any ECMAScript environment. In browsers, you can
// just use the window object.
var globalObj = (function() { return this; })();

var x = 1;
delete globalObj.x;
alert(x); // Alerts 1, x could not be deleted

y = 2;
delete globalObj.y;
alert(y); // Error, y is undefined

에서 http://www.updrift.com/article/to-var-or-not-to-var-my-javascript

  1. 전역 변수의 경우 중요하지 않지만 일관성을 위해 사용할 수 있습니다.
  2. 항상 'var'를 사용하여 로컬 함수에서 변수를 선언하십시오. 다른 범위에서 같은 이름의 다른 변수 대신 변수의 로컬 복사본을 사용하고 있는지 확인합니다.

예를 들어, 여기에있는 두 개의 유사한 함수는 매우 다른 효과를 갖습니다.

var myvar = 0;
function affectsGlobalVar(i){
   myvar = i;
}
function doesNotAffectGlobalVar(i){
   var myvar = i;
}

var가 없으면 변수는 전역으로 정의됩니다.


페이지에 Google 애드 센스를 추가 할 때 여러 자바 스크립트 파일을 연결하게됩니다. 변수는 거기에 정의되어 있습니다.

http://pagead2.googlesyndication.com/pagead/show_ads.js 는 페이지의 스크립트 참조 중 하나 여야합니다.


For the unenlightened like myself, JavaScript basically has two scopes for variables: global and local. Variables assigned outside of a function are global, and variables assigned inside of a function, using the var keyword, are local (not rocket surgery). However, if you leave the var keyword off, it assigns a global variable, regardless of where it’s declared.

From: http://opensoul.org/2008/9/4/the-importance-of-var-in-javascript

참고URL : https://stackoverflow.com/questions/3892696/is-var-necessary-when-declaring-javascript-variables

반응형