2

为什么下面的代码不会提醒未定义?

function test(param){ 
     var param =  param;
     alert(param);
 } 
test("SO"); // alerts SO

分配给局部变量的参数如何与函数的参数匹配,而不是与局部变量本身匹配?
正确的值是否对函数参数具有“匹配偏好”或原因是什么?

4

1 回答 1

2

里面有两个部分

var param =  param;

第一个是 var 声明:

var param;

第二个是赋值:

param = param;

var 声明什么也不做,因为变量已经存在(变量的范围是整个函数调用)。并且分配什么也不做,因为它保持相同的值。

您可以通过分配不同的值来检查:

function test(param){ 
     console.log('1', param) // logs "SO"
     var param =  param+"4";
     console.log('2', param) // logs "SO4"
} 
test("SO");
于 2014-10-20T12:32:13.077 回答