[javascript] JavaScript 함수에서 전역 변수 정의
JavaScript 함수에서 전역 변수를 정의 할 수 있습니까?
다른 함수 trailimage
에서 변수 ( makeObj
함수에 선언되어 있음 )를 사용하고 싶습니다 .
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript">
var offsetfrommouse = [10, -20];
var displayduration = 0;
var obj_selected = 0;
function makeObj(address) {
**var trailimage = [address, 50, 50];**
document.write('<img id="trailimageid" src="' + trailimage[0] + '" border="0" style=" position: absolute; visibility:visible; left: 0px; top: 0px; width: ' + trailimage[1] + 'px; height: ' + trailimage[2] + 'px">');
obj_selected = 1;
}
function truebody() {
return (!window.opera && document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
}
function hidetrail() {
var x = document.getElementById("trailimageid").style;
x.visibility = "hidden";
document.onmousemove = "";
}
function followmouse(e) {
var xcoord = offsetfrommouse[0];
var ycoord = offsetfrommouse[1];
var x = document.getElementById("trailimageid").style;
if (typeof e != "undefined") {
xcoord += e.pageX;
ycoord += e.pageY;
}
else if (typeof window.event != "undefined") {
xcoord += truebody().scrollLeft + event.clientX;
ycoord += truebody().scrollTop + event.clientY;
}
var docwidth = 1395;
var docheight = 676;
if (xcoord + trailimage[1] + 3 > docwidth || ycoord + trailimage[2] > docheight) {
x.display = "none";
alert("inja");
}
else
x.display = "";
x.left = xcoord + "px";
x.top = ycoord + "px";
}
if (obj_selected = 1) {
alert("obj_selected = true");
document.onmousemove = followmouse;
if (displayduration > 0)
setTimeout("hidetrail()", displayduration * 1000);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<img alt="" id="house" src="Pictures/sides/right.gif" style="z-index: 1; left: 372px;
top: 219px; position: absolute; height: 138px; width: 120px" onclick="javascript:makeObj('Pictures/sides/sides-not-clicked.gif');" />
</form>
</body>
</html>
답변
예, 다른 사람들이 말했듯이 var
전역 범위 (모든 함수 외부)를 사용하여 전역 변수를 선언 할 수 있습니다.
<script>
var yourGlobalVariable;
function foo() {
// ...
}
</script>
또는 다음에서 속성을 할당 할 수 있습니다 window
.
<script>
function foo() {
window.yourGlobalVariable = ...;
}
</script>
… 브라우저에서 선언 된 모든 전역 변수 전역 변수는 객체의 var
속성입니다 window
. (최신 사양에 ECMAScript를 2015, 새로운 기능 let
, const
그리고 class
전역에서 문은 전역 객체의 속성이 아닌 전역을 작성, ES2015의 새로운 개념을.)
( 암시 적 글로벌의 공포 도 있지만 의도적으로 수행하지 말고 ES5를 사용하여 실수로 실수하지 않도록 최선을 다하십시오 "use strict"
.)
모든 것 : 가능하다면 (그리고 거의 확실하게) 전역 변수를 피할 것입니다. 내가 언급 한 바와 같이, 그들은의 특성을 끝나게 window
하고, window
이미 많은만큼 붐비는 모든 요소가 무엇 id
(단지가 많은 name
곧 사양, IE 그냥 아무것도에 대한 덤프 있음)에 관계없이에 덤프되는 (그리고 name
거기에 ).
대신 코드를 범위 지정 함수로 감싸고 해당 범위 함수에 로컬 변수를 사용하고 그 안에 다른 함수를 닫으십시오.
<script>
(function() { // Begin scoping function
var yourGlobalVariable; // Global to your code, invisible outside the scoping function
function foo() {
// ...
}
})(); // End scoping function
</script>
답변
업데이트 1 : 주석을 읽으면이 특정 명명 규칙에 대한 좋은 토론이 있습니다.
UPDATE2 : 내 답변이 게시 된 이후 명명 규칙이 더 공식적인 것으로 보입니다. 가르치고 책을 쓰는 사람들은 var
선언과 function
선언 에 대해 말합니다 .
업데이트 3 : 여기 내 요점을 지원하는 추가 위키 백과 게시물이 있습니다 : http://en.wikipedia.org/wiki/Declaration_(computer_programming)#Declarations_and_Definitions
… 주된 질문에 대답합니다. 함수 앞에 DECLARE 변수. 이것은 효과가 있으며 범위 상단에서 변수를 선언하는 모범 사례를 준수합니다. 🙂
답변
그냥 선언
var trialImage;
외부. 그때
function makeObj(address) {
trialImage = [address, 50, 50];
..
..
}
도움이 되었기를 바랍니다.
답변
아냐, 못해 함수 외부에서 변수를 선언하십시오. 값을 지정할 때 동시에 선언하지 않아도됩니다.
var trailimage;
function makeObj(address) {
trailimage = [address, 50, 50];
답변
함수 외부에서 선언하고 함수 내부에 값을 할당하십시오. 다음과 같은 것 :
<script type="text/javascript">
var offsetfrommouse = [10, -20];
var displayduration = 0;
var obj_selected = 0;
var trailimage = null ; // GLOBAL VARIABLE
function makeObj(address) {
trailimage = [address, 50, 50]; //ASSIGN VALUE
또는 단순히 함수 내부의 변수 이름에서 “var”을 제거하면 전역 변수가되지만 더 깨끗한 코드를 위해 외부에서 한 번 선언하는 것이 좋습니다. 이것은 또한 작동합니다 :
var offsetfrommouse = [10, -20];
var displayduration = 0;
var obj_selected = 0;
function makeObj(address) {
trailimage = [address, 50, 50]; //GLOBAL VARIABLE , ASSIGN VALUE
이 예제가 더 많은 설명을 바랍니다 : http://jsfiddle.net/qCrGE/
var globalOne = 3;
testOne();
function testOne()
{
globalOne += 2;
alert("globalOne is : " + globalOne );
globalOne += 1;
}
alert("outside globalOne is : " + globalOne);
testTwo();
function testTwo()
{
globalTwo = 20;
alert("globalTwo is " + globalTwo);
globalTwo += 5;
}
alert("outside globalTwo is :" + globalTwo);
답변
함수 외부의 trailimage 변수를 정의하고 makeObj 함수에서 값을 설정하는 것은 매우 간단합니다. 이제 어디서나 그 가치에 접근 할 수 있습니다.
var offsetfrommouse = [10, -20];
var displayduration = 0;
var obj_selected = 0;
var trailimage;
function makeObj(address) {
trailimage = [address, 50, 50];
....
}
답변
var Global = 'Global';
function LocalToGlobalVariable() {
//This creates a local variable.
var Local = '5';
//Doing this makes the variable available for one session
//(a page refresh - Its the session not local)
sessionStorage.LocalToGlobalVar = Local;
// It can be named anything as long as the sessionStorage references the local variable.
// Otherwise it won't work
//This refreshes the page to make the variable take effect instead of the last variable set.
location.reload(false);
};
//This calls the variable outside of the function for whatever use you want.
sessionStorage.LocalToGlobalVar;
나는 이것에 많은 구문 오류가있을 것이라는 것을 알고 있지만 일반적인 생각은 … 이것을 지적 해 준 LayZee에게 감사드립니다 … 로컬 및 세션 저장소가 무엇인지 http : //www.w3schools 에서 찾을 수 있습니다 . COM / HTML / html5_webstorage.asp . 내 코드에 대해 똑같은 것이 필요했으며 이것은 정말 좋은 생각이었습니다.