<script type="text/javascript">
//通过JS内置函数创建函数
var func=new Function('a','b','return a+b');
// alert(func(3,5));//8
var func1=function(a,b){return a+b};
alert(func1(1,5));//6
//作用域链
var a=1;
function test(){
var b=2;
return a;
}
alert(test());//1
alert(b);//not defined
//还是作用域链
var a=1;
function test(){
var b=2;
function test1(){
var c=3;
alert(b);
return c;
}
test1();
}
test();
//词法作用域 f1和f2是两个不同的词法环境
function f1(){
var a=1;
return f2();
}
function f2(){
return a;
}
alert(f1());//a is not defined
function f1(){
var a=1;
return f2();
}
function f2(){
var b=3;
return a;
}
alert(f1());//undefined
var a=55;
alert(f1());//55,因为这时读到的a=55是全局变量
//---------------------------------------------
function f(){
var a='king';
alert(a);
return 11;
}
var test= f();
alert(test)//这时test只是一个变量 11;
function f(){
var a='king';
return function(){
return a;
}
}
alert(a);//访问不到
var test=f();//则test是一个函数,就是f()返回的那个函数;test就等于f()的返回值;
alert(test());//弹出f() retrun返回的那个匿名函数中返回的a;
//-------------------------------------------------
//这是另一种方法 全局变量法
var n;
function f(){
var a='king';
n=function(){
return a;
}
}
f();//先调用,才会改变n的值
alert(n());
//传参数法
function f(param){
var n=function(){
return param;
}
param++;
return n;
}
var test=f(456);
alert(test());
</script>
js作用域相关问题
最新推荐文章于 2024-07-09 19:28:48 发布