자바스크립트를 공부하면서 가장 헷갈리고 있는 부분이 바로 'var' 키워드이다.
어디서는
 var 변수=값;
라고 선언하고, 어디서는
 변수=값;
이라고만 선언하는데, C언어적인 관점에서는 도무지 있을수 없는 녀석이라 혼돈을 더해주고만 있어서
검색을 해보지만 이렇다 할 레퍼런스를 찾지는 못했다.

간략하게만 정리하자면
1. var 를 붙이지 않으면 자동으로 "전역변수"로 선언되며
   var 를 붙이지 않은 변수는 window 오브젝트(혹은 컨텍스트?)에 선언된다.
2. javascript 는 dynamic scope 이기 때문에 함수에서 변수를 사용시에는
  함수가 어디에 선언되었냐 보다는, 어디에서 함수가 불려지냐는 "문맥(context)"가 중요해 진다고 한다.
3. 그리고 var로 선언한 변수는 delete 키워드로 메모리를 해제할수 없다.

아무튼 ECMA 표준을 보던가 해서 명확하게 좀 찾아볼 필요가 있어 보인다.


[링크 : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Functions]
Posted by 구차니
2010/07/23 - [Programming/Javascript] - javascript / XML - XMLHttpRequest

XML이 파일을 기술하는 형태등이라면 DOM은 그러한 데이터를 조작하는 방법을 의미한다.
DOM은 XML 파일에 대해서도 사용이 가능하고
HTML 파일에 대해서도 tree 구조로 navigation이 가능하다.

그러고 보니.. 이녀석을 이용하면 예전에 완전 생 노가다로 했던
웹에서 특정 셀의 자료들만 긁어오기를 자동화 시킬수 있을 것으로 보인다.
(satcodx.com 에서 주파수/심볼/polarization 을 자동으로 긁어오기 라던가?)

[링크 : http://www.w3.org/TR/#tr_DOM]
    [링크 : http://www.w3.org/TR/DOM-Level-2-Core/core.html]
[링크 : https://developer.mozilla.org/Special:Tags?tag=DOM&language=en]
    [링크 : https://developer.mozilla.org/en/document.getElementsByName]
    [링크 : https://developer.mozilla.org/en/document.getElementById]

Posted by 구차니
XMLHttpRequest() 는 XML 파서를 생성하는 자바스크립트 함수이다.
동기/비동기로 작동을 시킬수 있으며 동기로 작동하면 순간적으로 UI가 멈추니 쓰지 말란다~

기본 사용

XMLHttpRequest의 사용법은 아주 간단합니다. 이 개체의 인스턴스를 만들고, URL을 열고, 요청을 보내면 됩니다. 그 후에는 인스턴스의 결과 문서와 HTTP 상태 코드를 사용할 수 있게됩니다.

var req = new XMLHttpRequest();
req.open('GET', 'http://www.mozilla.org/', false);
req.send(null);
if(req.status == 200)
dump(req.responseText);
참고: 이 예제는 동기적으로 동작하므로 이 함수를 JavaScript에서 호출하면 UI가 멈춥니다. 실제 제품 코드에서는 이 코드를 사용하지 마십시오.

[링크 : https://developer.mozilla.org/ko/XMLHttpRequest]

누가 머래도 원본(?)이 장땡
[NoInterfaceObject]
interface XMLHttpRequestEventTarget : EventTarget {
// for future use
};

[Constructor]
interface XMLHttpRequest : XMLHttpRequestEventTarget {
// event handler attributes
attribute Function onreadystatechange;

// states
const unsigned short UNSENT = 0;
const unsigned short OPENED = 1;
const unsigned short HEADERS_RECEIVED = 2;
const unsigned short LOADING = 3;
const unsigned short DONE = 4;
readonly attribute unsigned short readyState;

// request
void open(DOMString method, DOMString url);
void open(DOMString method, DOMString url, boolean async);
void open(DOMString method, DOMString url, boolean async, DOMString? user);
void open(DOMString method, DOMString url, boolean async, DOMString? user, DOMString? password);
void setRequestHeader(DOMString header, DOMString value);
void send();
void send(Document data);
void send([AllowAny] DOMString? data);
void abort();

// response
readonly attribute unsigned short status;
readonly attribute DOMString statusText;
DOMString getResponseHeader(DOMString header);
DOMString getAllResponseHeaders();
readonly attribute DOMString responseText;
readonly attribute Document responseXML;
};

[링크 : http://www.w3.org/TR/XMLHttpRequest/]

'Programming > javascript & HTML' 카테고리의 다른 글

javascript - scope (var keyword)  (2) 2010.07.23
javascript / DOM - document.getelementbyid  (0) 2010.07.23
javascript - alert() confirm() prompt()  (6) 2010.07.20
javascript 객체출력  (8) 2010.07.20
javascript - for / for .. in  (0) 2010.07.18
Posted by 구차니
alert() 은 다음과 같이 "확인" 버튼만 존재한다.
그리고 리턴값은 undefined 이다. (값을 리턴하지 않음)

<html>
<script type="text/javascript">
ret = alert("al!");
document.write(ret, "<BR>");
</script>
</html>


confirm() 은 다음과 같이 "확인", "취소" 버튼이 존재한다.
그리고 리턴값은 true/false 이다.

<html>
<script type="text/javascript">
ret = confirm("co!");
document.write(ret, "<BR>");
</script>
</html>



prompt()는 다음과 같이 "확인", "취소" 버튼 그리고 editbox가 존재한다.
그리고 리턴값은 null(취소) 혹은 값이다(내용입력 없이 확인을 누르면 ""이 리턴된다)

<html>
<script type="text/javascript">
ret = prompt("pr!");
document.write(ret, "<BR>");
</script>
</html>


'Programming > javascript & HTML' 카테고리의 다른 글

javascript / DOM - document.getelementbyid  (0) 2010.07.23
javascript / XML - XMLHttpRequest  (2) 2010.07.23
javascript 객체출력  (8) 2010.07.20
javascript - for / for .. in  (0) 2010.07.18
javascript - 변수 타입  (0) 2010.07.18
Posted by 구차니
javascript 에서 window 객체가 최상위 객체라고 하길래
어떤 객체들이 있나, 어떤 함수들이 있나 for...in 을 이용해서 출력했다.
하지만 출력하다 죽는 문제가 있어 해결방법을 찾던중
try..catch 문이란게 있었고 e.message 로 메시지를 출력하면 계속 진행하는 것을 발견했다.

음.. 문법은 거의 C++에 가까운 느낌이라고 해야하나..

<html>
<script type="text/javascript">
document.write("<hr><H1>window</H1>");
for (i in window)
{
  try
  {
    if(typeof(window[i]) == 'object')
          document.write("<B>",i,"</B><br>");
    else  document.write(window[i], "<br>");
  }
  catch(e)
  {
    document.write(i,"-");
    document.write("<font color=red>",e.message, "</font><br>");
  }
}

document.write("<hr><H1>document</H1>");
for (i in document)
{
  try
  {
    if(typeof(document[i]) == 'object')
          document.write("<B>",i,"</B><br>");
    else  document.write(document[i], "<br>");
  }
  catch(e)
  {
    document.write(i,"-");
    document.write("<font color=red>",e.message, "</font><br>");
  }
}

document.write("<hr><H1>location</H1>");
for (i in location)
{
  try
  {
    if(typeof(location[i]) == 'object')
          document.write("<B>",i,"</B><br>");
    else  document.write(location[i], "<br>");
  }
  catch(e)
  {
    document.write(i,"-");
    document.write("<font color=red>",e.message, "</font><br>");
  }
}

document.write("<hr><H1>history</H1>");
for (i in history)
{
  try
  {
    if(typeof(history[i]) == 'object')
          document.write("<B>",i,"</B><br>");
    else  document.write(history[i], "<br>");
  }
  catch(e)
  {
    document.write(i,"-");
    document.write("<font color=red>",e.message, "</font><br>");
  }
}

document.write("<hr><H1>navigator</H1>");
for (i in navigator)
{
  try
  {
    if(typeof(navigator[i]) == 'object')
          document.write("<B>",i,"</B><br>");
    else  document.write(navigator[i], "<br>");
  }
  catch(e)
  {
    document.write(i,"-");
    document.write("<font color=red>",e.message, "</font><br>");
  }
}
</script>
</html>


'Programming > javascript & HTML' 카테고리의 다른 글

javascript / XML - XMLHttpRequest  (2) 2010.07.23
javascript - alert() confirm() prompt()  (6) 2010.07.20
javascript - for / for .. in  (0) 2010.07.18
javascript - 변수 타입  (0) 2010.07.18
javascript template  (0) 2010.07.18
Posted by 구차니
Programming/C Win32 MFC2010. 7. 19. 02:26
문득 수직탭은 들어 본적은 있는데 머하는데 쓰고,
어떻게 출력이 되는지는 모른다는 깨달음(?)을 얻었다.
검색을 해봐도 이렇다할 결과가 없긴한데...

대충 추려내자면
예전에 리본/도트 프린터 시절에 제어를 위해 존재했었는데,
프린터에서 수평탭은 8칸, 수직탭은 6줄마다 이동하도록 되어있다고 한다.
하지만, Virtual Terminal 상에서 표현은 자율에 맡기다 보니,
이상한 문자가 출력되거나, 엔터 처럼 처리되는 경우가 많은것으로 보인다.



대충 리눅스 상에서 해보니 \v (vertical tab)은 LF의 느낌이 든다.
LF(Line Feed)는 지금의 위치에서 바로 아래로 내려지게 되고, CR(Carriage Return)은 가장 앞줄로 이동하게 된다.
(타자기를 생각하면 한글자씩 쓰다가 끝까지 치게 되면 왼쪽으로 미는데 그걸 CR이라고 보면되고
종이를 밀어서 한줄 아래로 내리는걸 LF라고 보면된다.)


Posted by 구차니
자바는 특이하게도
c언어 타입(컴파일러 언어 계열)의 for 문과
python 타입(인터프리터 언어 계열)의 for문을 지원한다.

c언어 타입의 for문
for ([initial-expression]; [condition]; [final-expression])
   statement

[링크 : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/for]

python 타입의 for..in 문
for (variable in object)
  statement

[링크 : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/for...in]


아래의 소스는 아직 문제가 있어 전체의 객체에 대해 출력을 하지 못한다. (참고용으로만 사용)
소스 결과
<html>
<script type="text/javascript">
document.write("<hr><H1>window</H1>");
for (i in window)
{
  if(typeof(window[i]) == 'object')
        document.write("<B>",i,"</B><br>");
  else  document.write(window[i], "<br>");
}
</script>
</html>

window

function getInterface() { [native code] }
window
document
navigator
netscape
function XPCSafeJSObjectWrapper() { [native code] }
function XPCNativeWrapper() { [native code] }
Components


'Programming > javascript & HTML' 카테고리의 다른 글

javascript - alert() confirm() prompt()  (6) 2010.07.20
javascript 객체출력  (8) 2010.07.20
javascript - 변수 타입  (0) 2010.07.18
javascript template  (0) 2010.07.18
core javascript 문서  (2) 2010.07.18
Posted by 구차니
자바스크립트는 동적변수 타입을 지원한다.

일단은 var var_name; 식으로 선언을 할 수 있지만
선언하지 않고 값을 바로 할당해도 동적으로 타입을 결정하기 때문에 변수 타입은 신경쓰지 않아도 된다.

그래도 변수타입중에 신경을 써야 할 것이
undefined 라는 넘이다. 변수를 만들긴 했지만, 내용을 넣지 않았다면 "undefined"로 출력이 된다.

소스 결과
<html>
<script type="text/javascript">
    var ts;
    document.write(ts);
</script>
</html>
 undefined

굳이 var 라는 키워드를 이용해서 변수를 선언하지 않더라도 사용은 가능하지만
일단 변수를 선언하거나 대입하지도 않고 변수를 출력하려고 하면 에러가 발생한다.

소스 결과
<html>
<script type="text/javascript">
    var ts;
    document.write(ts);
    document.write(tt);
</script>
</html>
 undefined

 오류: tt is not defined
 소스 파일: file:///C:/window.html
 행: 5

undefined 는 일반적인 변수에 대한 값이 없음을 나타내고
true / false 는 수치형으로도 사용이 되지만 원칙적으로는 참/거짓에 대한 논리값을 적용한다.
그리고 null은 대소문자를 구분해야 한다.(null 은 object에 대한 값이다)

The typeof operator is used in either of the following ways:

  1. typeof operand
  2. typeof (operand)

Type Result
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Host object (provided by the JS environment) Implementation-dependent
Function object (implements [[Call]] in ECMA-262 terms) "function"
E4X XML object "xml"
E4X XMLList object "xml"
Any other object "object"

typeof true == 'boolean'
typeof null == 'object'

[링크:https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/typeof_Operator]

Logical (Boolean) values, either true or false

null, a special keyword denoting a null value; null is also a primitive value.
Because JavaScript is case-sensitive, null is not the same as Null, NULL, or
any other variant l undefined, a top-level property whose value is undefined; undefined is also a primitive value

Basic Data types


[링크 : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference]

'Programming > javascript & HTML' 카테고리의 다른 글

javascript 객체출력  (8) 2010.07.20
javascript - for / for .. in  (0) 2010.07.18
javascript template  (0) 2010.07.18
core javascript 문서  (2) 2010.07.18
javascript 관련 링크  (2) 2010.07.18
Posted by 구차니
html 웹 페이지 상에서 자바 스크립트를 사용할때의 템플릿

<html>
<script type="text/javascript">
function function_name(var1, var2)
{
    // statements
}

</script>
</html>


'Programming > javascript & HTML' 카테고리의 다른 글

javascript - for / for .. in  (0) 2010.07.18
javascript - 변수 타입  (0) 2010.07.18
core javascript 문서  (2) 2010.07.18
javascript 관련 링크  (2) 2010.07.18
JSON - JavaScript Object Notation  (2) 2010.06.07
Posted by 구차니
java script에 관련한 스펙은 ECMA에 정의되어 있다지만 귀차니즘으로 패스 -ㅁ-
가장 아래의 pdf는 웹을 pdf로 바꾼것으로 보이며, 귀찮으면 가장 아래만 다운받아서 보면된다.


[링크 : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference]

[링크 : http://www.webreference.com/javascript/reference/core/]
[링크 : http://www.webreference.com/javascript/reference/core_ref/contents.html]
[링크 : http://www.osxsux.net/NSCoreJS15.pdf]

'Programming > javascript & HTML' 카테고리의 다른 글

javascript - for / for .. in  (0) 2010.07.18
javascript - 변수 타입  (0) 2010.07.18
javascript template  (0) 2010.07.18
javascript 관련 링크  (2) 2010.07.18
JSON - JavaScript Object Notation  (2) 2010.06.07
Posted by 구차니