자바스크립트의 유효범위는 기존 블록 유효범위와 다르다


유효 범위가 블록 안에 존재 하지 않고 함수 안에 존재 한다.


무슨말인지 잘 이해가 안갈수도 있는데 예를 보면서 설명해 보겠다.


var test='111' //전역변수 test


//if블록 안

if(true){

var test='222'

}

console.log(test) // 222가 출력


보통 다른 언어를 생각한다면 if문안이니까 지역변수로 222가 저장되고


전역변수는 변화가 없다고 생각하지만 test변수값에는 222가 설정되었다.


다음 코드를 보자


var test='111'; //전역변수test


function test(){

var test='222';

}

test();

console.log(test); //111이 출력


위와 같이 함수안에 설정된 변수는 지역변수로 설정되고 출력값은 처음 설정한 111로 동일하다.


정리해 보면 자바스크립트는 유효범위가 블록(if, while, for ....)안에 존재하지 않고 함수안에 존재한다.

자바스트립트에서 함수 오버로딩 기능을 직접 제공하지 않지만 오버로딩을 가능하게 하는 방법이 있다.


일단 함수 오버로딩을 하려면 두가지 정보가 필요하다.


전달인자의 개수와 전달인자 타입을 알아야 한다.


우선 전달 인자의 개수로 오버로딩 하는 방법을 알아보자


arguments 변수를 활용하여 오버로딩을 할 수 있다.


arguments는 자바스트립트의 모든 함수 내부에 함수로 전달되는 모든 전달인자를 담은 배열같이 작동하는 변수다.


function message(){

for(var i=0; i<arguments.length; i++){

alert(arguments[i]);

}

}

message('hello', 'world', '!!');


위와 같이 간단한 함수를 만들고 인자값을 전달하면 전달된 인자값이 출력되는걸 확인할 수 있다.



이제 어떻게 오버로딩 할지 감이 잡힐 겁니다.


간단한 예로 설명하겠습니다.


function sendMessage(msg1, msg2){

//메시지 2개를 모두 받으면

if(arguments.length==2){

alert('메시지 2개 :'+msg1+', '+msg2);

}else{ //1개만 받으면

alert('메시지 1개 :'+msg1);

}

}


sendMessage('hello');

sendMessage('hello','world');


이렇게 arguments를 활용하여 전달인자 개수에 따라 구분해 줍니다.


다음으로 전달인자가 없을때 기본메시지를 출력하는 방법을 알아보겠습니다.


이때는 전달인자가 전달되지 않았을때 undefined라는 값을 이용합니다.


function message(msg){

//msg가 정의 되었는지 검사한다.

if(typeof msg=='undefined'){

//msg가 정의 되지 않았다면 기본메시지를 사용

msg='메시지를 입력하세요';

}

alert(msg);

}


위와 같이 전달인자가 없을때 undefined를 활용하면 된다.

문자열의 일부만 잘라 사용할 경우가 있다.


예제를 보면서 바로 해보자


var string='2013-06-11';


위 문자열을 잘라보겠다.


문자열에 있는 '-'를 기준으로 자를려면 다시 만하면 특정 문자를 기준으로 문자열을 자를려면 split을 사용하면 된다.


var strArray=string.split('-');


이렇게 split함수에 잘라내는데 기준이 될 문자열을 넣으로 문자열을 잘라 배열로 넘겨준다.


console.log(strArray[0]+', '+strArray[1]+', '+strArray[2]); 출력해보면 각 배열에 2013, 06, 11이 담겨진걸 확인 할 수 있다.




다음으로 문자열에서 기준없이 사용하고 싶은 문자열만 골라 가져오고 싶다면


substring함수를 사용하면 된다.


substring함수는 문자열의 길이를 기준으로 자른다고 표현하기보다 일정 문자열을 반환한다.


substring(시작인덱스, 종료인덱스);


var year=string.substring(0,4) //2013


var month=string.substring(5,7) //06


var day=string.substring(8,10) //11


출력해 보면 원하는 값이 잘 출력될 것이다.



위와 비슷하지만 조금 다른 함수 substr이 있다.


substr(시작인덱스, 길이)


var year=string.substr(0,4) //2013


var month=string.substr(5,2) //06


var day=string.substr(8,2) //11


출력해보면 substring과 출력 결과가 같다

웹에서 os정보를 알아볼려면 navigator객체를 사용하면 알 수 있다.


기기정보 : navigator.platform 

언어정보 : navigator.language


본인 폰에서 찍어보면 다음과 같다.

console.log(navigator.platform) //iPhone

console.log(navigator.language) //ko-kr


이 외에도 다른 정보들도 가져올 수 있다.

가장 간단한 방법으로 소개하자면


숫자형을 문자형으로 전환은 마지막에 빈문자열을 더한다  ( +'' )


문자열을 숫자형으로 전환은 마지막에 1을 곱한다. ( *1 )


var number=123;

var string='123';

console.log(typeof number); //number

console.log(typeof (number+'')); //string

console.log(typeof string); //string

console.log(typeof (string*1)); //number


setTimeout('test()',1000);


test()함수 1초후에 실행

문자열안에 찾고싶은 문자열이 있는지 알고싶으면 indexOf를 사용하면 된다.


var string="javascript";


var result=string1.indexOf('s');


찾고자 하는 문자가 없는경우 -1을 리턴하고


찾는값이 있으면 글자가 위치를 나타내는 숫자를 반환한다.


위의 경우 result값에는 4가 들어온다.

올림: Math.ceil();

버림: Math.floor();

반올림: Math.round();


Math.ceil(자리수);

Math.floor(자리수);

Math.round(자리수);


예)

var number=123.643


Math.ceil(number); -->124

Math.floor(number); -->123

Math.round(number); -->124


소수점 몇째자리에서 올리거나 버리거나 반올림해서 표현할 일이 있는데 이걸 응용하자면


소수점 에서 반올림 하는건 toFixed()를 사용하면 됩니다. 


다시 돌아와 이걸 응용해서 표현 해보면 


소수점 셋째자리에서 반올림해서 둘째자리까지 나타낼려고 합니다.


Math.floor(number*100)/100 -->123.64


Math.abs() 메소드를 사용하면 된다.


Math.abs(-5) -->5

+ Recent posts