JavaScript return的作用域

    技术2026-06-13  13

    fn()();//执行fn()得到函数c,再c()执行第二个alert var a = 0; function fn(){ alert(a); var a = 3; function c(){ alert(a); } return c; } /* 1. 定义 var a; funtion fn(){...} 2. 执行 fn() ===> 局部作用域 1. 定义 var a; funtion c(){...} 2. 执行 alert(a);//undefined a = 3; return c; fn()() ===> 局部作用域 1. 定义 2. 执行 alert(a); //3 */ /* 1. 由于函数的执行在定义全局变量a=0之前,所以第一个alert为undefined 2. 函数在哪定义的作用域就在哪,而不是在哪执行作用域在哪 c()在function()中定义的,因此c()的作用域在function()这个局部作用域中 */ var a = 5; function fn(){ var a = 10; alert(a); function b(){ a ++; alert(a); } return b; } var c = fn();//10 c();//11 fn()();//10 11 这个fn执行产生的作用域与第一个fn的作用域不同 c();//12 //这个c是第一个fn产生的,与第一个fn返回的c是同一个作用域

    总结: 函数在哪定义,其作用域就在哪;相同函数多次执行互不干扰

    Processed: 0.010, SQL: 9