3. 函数
3.1 函数的形参和实参
- 形参修改时,并不会影响到实参
- 函数调用时,输入参数的个数可以多于函数定义的参数个数
- 函数内部隐藏的对象, 由数组 arguments 保存函数实参的信息
<script type="text/javascript">
var a = 10;
var b = 20;
// 求和函数
// num1和num2形参
function sum(num1,num2){
// 形参修改时,并不会影响到实参
num1 = 13;
}
// a和b实参
sum(a,b);
// alert(a);
// 3个参数
// arguments: 函数内部隐藏的对象,保存实参的信息
function test(num1,num2,num3){
// alert(num1+num2+num3);
// alert(arguments[3]);
// alert(arguments.length);
}
// test(10,20,30);
test(10,20,30,40);
</script>
3.2 函数的作用域
预解析
- 所有变量,在代码真正运行前,都非赋值为定义的值;
- 所有的函数,在真正运行前,都是整个函数块;
- 遇到重名: 只留下一个; 变量和函数重名,只留下函数
逐行解析
- 表达式: = + -
备注:
- 函数也是一个作用域
- 函数中,局部优先
<script type="text/javascript">
var a = 1;
function fn1(){
alert(a); // 1
a = 2;
}
fn1();
alert(a); // 2
</script>
<script type="text/javascript">
var a = 1;
function fn1(){
alert(a); // undefined
var a = 2;
}
fn1();
alert(a); // 1
</script>
<script type="text/javascript">
var a = 1;
function fn1(a){
alert(a); // undefined
a = 2;
}
fn1();
alert(a); // 1
</script>
<script type="text/javascript">
alert(a); // 输出: function(){ alert("2----函数a"); }
var a = 1;
function a(){
alert("1----函数a");
}
alert(a); // 输出 1
var a = 3;
alert(a); // 输出 3
function a(){
alert("2----函数a");
}
alert(a); // 输出 3
</script>
网友评论