function f1(a) {
console.log(a);// 10; 这里我开始觉得是undefined的
// 我以为var a=1会先把var a=undefined 放在函数的最前面 但是好像并没有
var a=1;
console.log(a);// 1
console.log(arguments[0])// 1; 这里我觉得也是10
}
f1(10)
按照f1这个打印看来 var 声明的a 好像和形参a是有联系的 但是他们不是应该没有联系吗?
function f2(a) {
console.log(a); //10
var a;
console.log(a);//10
console.log(arguments[0])//10
}
f2(10)
f2 里面的a好像什么事都没做
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
假如 a 不是 arguments 的一份子,var赋值也会是相同的结果
console.log(arguments[0])// 1; 这个我也有点意外
可能当做对象处理了,当做对象绑定了。
形参a与局部变量a是同一个参数而非同名变量,同一作用域中哪来的同名变量……
变量声明前置是不假,但是如果发现已经有了的话,声明就被忽略了。还有严格模式下,像第一种情况是无法修改
arguments[0]的值的。