复制代码 代码如下: 、案例一 /*全局(window)域下的一段代码*/ function a(i) { var i; alert(i); }; a(10);
疑问:上面的代码会输出什么呢? 答案:10。 具体执行过程 a 函数有一个形参 i,调用 a 函数时传入实参 10,形参 i=10 接着定义一个同名的局部变量 i,未赋值 alert 输出 10 思考:局部变量 i 和形参 i 是同一个存储空间吗? 、案例二 复制代码 代码如下: 1 /*全局(window)域下的一段代码*/ 2 function a(i) { 3 alert(i); 4 alert(arguments[0]); //arguments[0]应该就是形参 i 5 var i = 2; 6 alert(i); 7 alert(arguments[0]); 8 }; 9 a(10);
疑问:上面的代码又会输出什么呢? 答案:10,10,2,2 具体执行过程 函数有一个形参i,调用 a 函数时传入实参 10,形参 i=10 第一个 alert 把形参 i 的值 10 输出 第二个 alert 把 arguments[0] 输出,应该也是 i 接着定义个局部变量 i 并赋值为2,这时候局部变量 i=2 第三个 alert 就把局部变量 i 的值 2 输出 第四个alert再次把 argumentsa[0] 输出 思考:这里能说明局部变量 i 和形参 i 的值相同吗?
、案例三 复制代码 代码如下: /*全局(window)域下的一段代码*/ function a(i) { var i = i; alert(i); }; a(10)
疑问:上面的代码又又会输出什么呢? 答案:10 具体执行过程 第一句声明一个与形参 i 同名的局部变量 i,根据结果我们知道,后一个 i 是指向了 形参 i,所以这里就等于把形参 i 的值 10 赋了局部变量 i 第二个 alert 当然就输出 10 思考:结合案列二,这里基本能说明局部变量 i 和形参 i 指向了同一个存储地址! 、案例四 复制代码 代码如下: /*全局(window)域下的一段代码*/ var i=10; function a() { alert(i); var i = 2; alert(i); }; a();