为什么下面的代码不提示未定义?如何在JavaScript中为参数赋值给具有相同名称的变量?
function test(param){
var param = param;
alert(param);
}
test("SO"); // alerts SO
这怎么正在被分配给本地变量的参数是与函数的参数相匹配,而不是与局部变量本身?
权值是否具有函数参数的“匹配偏好”或原因是什么?
为什么下面的代码不提示未定义?如何在JavaScript中为参数赋值给具有相同名称的变量?
function test(param){
var param = param;
alert(param);
}
test("SO"); // alerts SO
这怎么正在被分配给本地变量的参数是与函数的参数相匹配,而不是与局部变量本身?
权值是否具有函数参数的“匹配偏好”或原因是什么?
有两个部分
var param = param;
第一个是VAR声明:
var param;
第二个是assignement:
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-20 14:19:30
是的,函数参数被声明为变量(这也意味着你可以改变它们的值)。 – 2014-10-20 14:22:57
太棒了!接受你的答案。 – 2014-10-20 14:38:50
该代码不会返回'undefined'警报关闭后。 – Andy 2014-10-20 12:31:58
你是对的,我没有清楚地表达自己,已经根据我的意思编辑我的问题。 – 2014-10-20 14:43:32