일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CSS
- JavaScript
- Vista
- 블로그 조회수
- Administrator
- 인테리어그림
- flash
- Eclipse
- 블로그 수익화
- Jrun
- MSSQL
- PHP
- samba
- 국민연금
- CVS
- MySQL
- Adobe pdf reader
- 갑근세
- 블로그 방문자 늘리기
- oralce
- JSP
- HTML
- Jexcel
- 즐겨찾기 추가
- 소득세
- 블로그 조회수 늘리기
- 블루수국그림
- 에덴미술
- .NET
- IIS
- Today
- Total
I LOVE EJ
javascript 형변환 본문
( 자세한 내용은 책에... 좋은 책이다. GOOD!!! )
JavaScript is
1. The Core( ECMAScript )
2. The Document Object Model ( DOM )
3. The Browser Object Model( BOM )
현재의 모든 웹 브라우저는 ECMA-262 의 third edition을 따른다.
ECMAScript 의 기본 컨셉은 다음과 같다.
- variabled are loosely typed.
- End-of-line semicolons are optional
( ";"이 없으면 라인의 끝을 문장의 끝으로 인식한다.
하지만 오동작을 하는 브라우저가 있으므로 넣어준다. )
- Comments are the same as in Java, C and Perl.
- Braces indicate code blocks.
변수는 "var"를 사용해서 정의한다.
var test = "hi", test2 = "hola";
서로 다른 타입을 동시에 정의할 수 있다.
자바처럼 초기화를 하지 않는다고 해서 문제가 생기지 않는다.
굳이 변수를 사용하기 전에 선언을 할 필요가 없지만 해주는 것이 좋다.
sTest2 = sTest + "world";
sTest2 는 자동으로 global 변수가 된다.
ECMA-262 Keyword
case finally return void
catch for switch while
continue function this with
default if throw
delete in try
do instanceof typeof
ECMA-262 Edition 3 Reserved Words
( 현재는 사용해도 문제가 생기지 않지만 미래에 문제가 생길 수 있다. )
boolean export interface static
byte extends long super
char final native synchronized
class float package throws
const goto private transient
debugger implements protected volatile
double import public
EMCAScript 변수의 두가지 타입
primitive type : stack에 저장되는 데이터
--> undefined, null, boolean, number, string
reference : heap에 저장되는 데이터
primitive type를 체크할 수 있는 "typeof"
alert( typeof sTemp );
alert( typeof 95 );
typeof의 값은 다음 값중 하나
- undefined
- boolean
- number
- string
- object : 변수가 reference 타입이거나 null 타입인 경우
( 테스트 해보니 null인 경우 "null"로 리턴 )
undefined type
1. 선언만하고 초기화하지 않는 겨우
alert( oTemp );
}
alert( testFunc() == undefined );
Null type
- undefined 는 사실 null 로 부터 파생된 것이다.
Number type
- 32비트 integer이거나 64비트 floating-point
var iNum = 55; //
var iNum = 070; // 8진수
var iNum = 0x1f; // 16진수
Number.MIN_VALUE
연산의 결과가 Number.MAX_VALUE보다 큰 경우 Number.POSITIVE_INFINITY를 할당함.
연산의 결과가 Number.MIN_VALUE보다 큰 경우 Number.NEGATIVE_INFINITY를 할당함.
--> isFinite()라는 함수가 있음.
NoN : Not a Number
숫자가 아닌 타입을 숫자 타입으로 변환하려는 경우
alert( isNaN( "blue" ) ); // true
alert( isNaN( "123" ) ); // false
데이터 타입간의 컨버젼
boolean, number --> string
var num - 1;
alert( bool.toString() );
alert( num.toString() );
숫자인 경우 진수변환 메소드를 가지고 있음.
alert( num.toString( 2 ) );
alert( num.toString( 8 ) );
alert( num.toString( 16 ) );
string --> number
var iNum1 = parseInt( "1234blue" ); //1234 --> 유효한 값 까지만 체크하여 변환함.
var iNum2 = parseInt( "0xA" ); //10
var iNum3 = parseInt( "22.5" ); //22
var iNum4 = parseInt( "blue" ); // NaN
진수를 지정하여 변환하는 것도 가능함.
var iNum1 = parseInt( "AF", 16 ); // 175
var iNum2 = parseInt( "10", 2 ); // 2
var iNum3 = parseInt( "10", 8 ); // 8
var iNum4 = parseInt( "10", 10 ); // 10
parseFloat() 함수를 사용함.
var fNum1 = parseFloat( "1234blue" ); // 1234.0
var fNum2 = parseFloat( "0xA" ); // NaN
var fNum2 = parseFloat( "22.5" ); 22.5
var fNum3 = parseFloat( "22.34.5" ); // 22.34
var fNum6 = parseFloat( "0906" ); // 906
var fNum7 = parseFloat( "blue" ); // NaN
Boolean();
Number();
String();
을 사용해서도 type casting이 가능하다.
Object class
기본 클래스라 할 수 있겠다.
# properties
- constructor : 객체가 생성될 때 호출될 function의 reference
- prototype : 객체의 prototype에 대한 reference
# methods
- hasOwnProperty( property ) : 인자로 주어진 property가 존재하는지 체크 : 스트링 형태로 주어져야 함.
- isPrototypeOf( object ) : 다른 객체의 prototype인지 아닌지 (?)
- propertyIsEnumerable( property ) : enumerated 가능한지
- toString() : 객체를 나타내는 string 값
- valueOf()
Nunmber class
var oNumberObject = new Numer(99);
alert( oNumberObject.valueOf() ); // retrun primitive type
alert( oNumberObject.toFiexed(2) ); //outputs 99.00
range : 0 ~ 20
alert( oNumberObject.toExponential() ); // 9.9e+1
String class
alert( oStringObject.length ); // 11
alert( oStringObject.charAt(1) ); // e
alert( oStringObject.charCodeAt() ); // 101
var oStringObject = new String( "hello " );
var sResult = oStringObject.concat( "world" );
alert( sResult ); // "hello world"
alert( oStringObject ); // "hello";
sResult = oStringObject + "world";
var oStringObject = new String( "hello world" );
alert( oStringObject.indexOf( "o" ) ); // 4
alert( oStringObject.lastIndexOf( "o" ) ); // 7
var oStringObject = new String( "yellow" );
alert( oStringObject.localeCompare( "brick" ) ); // 1
alert( oStringObject.localeCompare( "yellow" ) ); // 0
alert( oStringObject.localeCompare( "zoo" ) ); // -1
var oStringObject = new String( "hello world" );
alert( oStringObject.slice(3) ); // "lo world"
alert( oStringObject.substring( 3 ) ); // "lo world"
alert( oStringObject.slice( 3, 7 ) ); // "lo w";
alert( oStringObject.substring( 3, 7 ) ); // "lo w";
slice와 substring이 같은 결과를 리턴하는데 두 메소드의 차이점은 음수의 처리이다.
alert( oStringObject.slice(-3) ); // "rld"
alert( oStringObject.substring( -3 ) ); // "hello world"
alert( oStringObject.slice( 3, -4 ) ); // "lo w";
alert( oStringObject.substring( 3, -4 ) ); // "hel"
slice는 -3을 length + (-3) 으로 인식하여 처리하고
substring은 -3을 0으로 인식하여 처리한다.
toLocaleUpperCase(), toUpperCase(), toLocaleLowerCase(), toLowerCase()
instanceof
Operator
delete 앞서 정의된 속성이나 메소드를 삭제함.
o.name = "Nicholas";
alert( o.name ); // Nicholas
delete o.name;
alert( o.name ); // undefined
- 개발장에 의해 정의된 속성이나 메소드가 아닌 경우에는 사용할 수 없음.
delete o.toString(); --> error
bitwise NOT : ~
bitwise AND : &
bitwise OR : |
bitwise XOR : ^
left shift : <<
signed right shift : >>
unsigned right shift : >>>
logical NOT : !
logical ANT : &&
logical OR : ||
multipy : *
divide : /
modulus : %
add : +
subtract : -
reation operator : <, >, <=, >=
equal : ==
not equal : !=
identically equal ===
Label
label : statement
break, 나 continue 문에서 사용
outermost:
for ( var i = 0 ; i < 10, i++ ) {
for ( var j = 0 ; j < 10 ; j++ ) {
if ( i == 5 && j == 5 ) {
continue outermost;
{
iNum++;
}
}
with ( expression ) statement;
var sMessage = "heelo world";
with( sMessage ) {
alert( toUpperCase() );
}
사용하지 않는게 좋다고 함.
function functionName( arg0, arg1, ..., argN ) {
statements
}
function이 명확하게 어떤값을 리턴하지 않거나 값이 없이 return; 문만 사용되는 경우에
undefined이 리턴될 것이다.
overloading은 없다. overwriting은 있다.
"arguments"라는 객체를 사용할 수 있다.
alert( arguments.length );
if ( arguments[0] == "bye" ) {
return;
}
alert( arguments[0] );
}
Function class
var function_name = new Function( argument1, argument2, ..., arugmentN, function_body );
var sayHi = new Function( "sName", "sMessage", "alert( \"Hello\" + sName + \", \" + sMessage + \");" );
느리다 쓰지마라.
function doAdd( iNum ) {
alert( iNum + 10 );
}
alert( doAdd.toString() );
Closures...(?)
'Web publishing > JavaScript' 카테고리의 다른 글
퀵메뉴 (0) | 2009.02.24 |
---|---|
라디오 버튼 체크에 따라서 텍스트 입력란이 활성화/비활성화 (0) | 2008.11.25 |
영문 소문자 입력시 대문자로 바로 변환하도록 구현하기 (0) | 2008.08.14 |
SELECT BOX에서 선택된 OPTION의 VALUE와 TEXT를 모두 가져오는 방법 (0) | 2008.08.01 |
window.showModalDialog() 파라미터에 대해서 덧붙이자면.. (1) | 2008.05.06 |