literal이란 말 그대로 “말 그대로”이다.
var num:Number=2; (리터럴 선언)
num이라는 참조 값은 value값을 2로 가지는 변수(참조 값)으로 선언 되어지는 것이다.
var arr:Array=[1,2,3]; (배열 리터럴 선언)
이처럼 작업 제작에 있어서 편의성을 제공하여 빠르게 제작 가능하도록 한 것이다.
만약에 데이터 타입을 선언 안 해줘도 컴파일 시 알맞은 데이터 타입으로 설정을 해준다.
또한 다른 방식은 래퍼 클래스로 선언하여 객체로 생성하는 방식이다.
var num:Number=new Number(2); (래페 클래스 선언)
num 변수를 하나의 객체로 간주하고 생성하는 것이다.
하지만 액션스크립트에서는 리터럴 방식으로 선언하든 래퍼 클래스로 만든 객체이든 모두 동일한
객체로 간주 한다는 것이다. 액션스크립트에서는 특수한 메모리 최적화를 따른다 한다. 리터럴
원시형 데이터 선언은 곧 변하지 않는 객체로 저장된다고 한다. 이 말은 참조 값을 전달하는 것이
실제 값을 전달하는 것과 동일하다는 것이다. 실제 값보다 참조 값이 크기가 적으므로 성능 향상이
되기 때문이다.
var num:int=2.7;
trace(num+1); //결과값:3-리터럴 방식 int형 이기 때문에 소수점이하는 버림
var str="apple";
trace(typeof(str)); //결과값:string-리터럴 방식으로 선언, datatype이 자동으로 string으로 설정
/*
var word1=ipod;
trace(typeof(str)); //Error-리터럴 타입 선언 관련 에러, 문자열은 ""를 표기해줘야 한다.
var word2:String=ipod;
trace(typeof(str)); //Error-리터럴 타입 선언 관련 에러, 문자열은 ""를 표기해줘야 한다.
var word="ipod";
trace(typeof(str)); //Success
*/
var numObj:Number=new Number(2);
trace(numObj); //결과값:2-래퍼 클래스로 선언
trace(typeof(numObj)); //결과값:number
var boo:Boolean=new Boolean();
trace(boo); //결과값:false-디폴트 값
/*
각 데이터 타입에 따른 default 값
number-0
string-공백문자("")
boolean-false
int-0
uint-0 d
array.length-0
array[0]-undefined
*/
var arr:String=new String();
trace("top"+"\n"+arr+"\nbottom");
변수 리터럴에서 다음으로는 함수 리터럴에 대해서 알아 본다.
기본은 다음과 같다.
var func:Function=function(…params){ 처리문 };
함수 리터럴은 코드의 가속성을 좋게 하거나 dynamic 인스턴스 변수에 저장하는데 유용하게 쓰인다.
var tempObj:Object=new Object(); tempObj.sum=function(num:Number):void{ trace(num* num); }
tempObj.sum(2);
trace(tempObj.sum is Function);
trace(tempObj.sum); tempObj.sum="type";
trace(tempObj.sum);




