함수의 유효 범위
전역변수와 지역변수
var vscope = 'global';
function fscope(){
var vscope = 'local';
alert(vscope);
}
fscope();
alert(vscope);
var vscope = 'global';
function fscope(){
vscope = 'local';
}
fscope();
alert(vscope);
var vscope = 'global';
function fscope(){
var vscope = 'local';
vscope = 'local';
}
fscope();
alert(vscope);
효용
function a (){
var i = 0;
}
for(var i = 0; i < 5; i++){
a();
document.write(i);
}
function a (){
i = 0;
}
for(var i = 0; i < 5; i++){
a();
document.write(i);
}
전역변수
MYAPP = {}
MYAPP.calculator = {
'left' : null,
'right' : null
}
MYAPP.coordinate = {
'left' : null,
'right' : null
}
MYAPP.calculator.left = 10;
MYAPP.calculator.right = 20;
function sum(){
return MYAPP.calculator.left + MYAPP.calculator.right;
}
document.write(sum());
(function(){
var MYAPP = {}
MYAPP.calculator = {
'left' : null,
'right' : null
}
MYAPP.coordinate = {
'left' : null,
'right' : null
}
MYAPP.calculator.left = 10;
MYAPP.calculator.right = 20;
function sum(){
return MYAPP.calculator.left + MYAPP.calculator.right;
}
document.write(sum());
}())
유효범위 대상
for(var i = 0; i < 1; i++){
var name = 'coding everybody';
}
alert(name);
정적 유효범위
var i = 5;
function a(){
var i = 10;
b();
}
function b(){
document.write(i);
}
a();
값으로서의 함수와 콜백
함수의 용도 1
function a(){}
var a = function(){}
a = {
b:function(){}
}
function cal(func, num){
return func(num)
}
function increase(num){
return num+1
}
function decrease(num){
return num-1
}
alert(cal(increase, 1));
alert(cal(decrease, 1));
함수의 용도 2
function cal(mode){
var funcs = {
'plus' : function(left, right){return left + right},
'minus' : function(left, right){return left - right}
}
return funcs[mode];
}
alert(cal('plus')(2,1));
alert(cal('minus')(2,1));
var process = [
function(input){ return input + 10;},
function(input){ return input * input;},
function(input){ return input / 2;}
];
var input = 1;
for(var i = 0; i < process.length; i++){
input = process[i](input);
}
alert(input);
콜백
- 기존 메소드의 원칙을 함수 인자를 통해서 변경할 수 있다
var numbers = [20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
console.log(numbers.sort());
var numbers = [20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
var sortfunc = function(a,b){
if (a>b){
return 1;
}else if(a<b){
return -1;
}else{
return 0;
}
}
console.log(numbers.sort(sortfunc))
function sortNumber(a,b){
return a-b;
}
var numbers = [20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
alert(numbers.sort(sortNumber));
비동기 처리
- 시간이 오래걸리는 작업이 있을 때 이 작업이 완료된 후에 처리해야 할 일을 콜백으로 지정하면 해당 작업이 끝났을 때 미리 등록한 작업을 실행하도록 할 수 있다.