参数
当遇到不确定的值, 就需要抽取成形参, 在调用的时候, 不同数据传进去
形参: 形式参数, 写在函数function后面的()里, 用来接收实际传递过来的数据
类似变量, 命名规范和变量一致
实参: 实际传递过来的数据, 写在函数调用的()里
arguments:存在于每一个函数中, 是实参的集合
一般形参和实参一一对应
单个参数
// 单个参数
function sum(a) {
// 求和
var s = 0;
// 1 + 2 + 3 + 4 + ... + 100
for(var i = 1; i <= a; i++){
// s = s + i;
s += i;
}
console.log(s);
};
// 调用
sum(100);
sum(1000);
sum(2000);
多个参数
多个参数: 用,隔开
// 50-80 90-100 1000-10000
// 多个参数: 用,隔开
function sum1(start, end) {
// 求和
var s = 0;
// 1 + 2 + 3 + 4 + ... + 100
for(var i = start; i <= end; i++){
// s = s + i;
s += i;
}
console.log(s);
};
sum1(1, 100);
sum1(50, 80);
arguments
如果参数个数不确定, 形参和实参干脆一个都不写, 直接使用arguments
arguments: 存在于每一个函数中, 是实参的集合
function sum2() {
console.log(arguments);
// 将arguments中的每个数据加起来
var s = 0;
for(var i = 0; i < arguments.length; i++){
console.log(arguments[i]);
s += arguments[i];
}
console.log(s);
}
sum2(3,4,5,6,7,8);
sum2(40,50,60);
形参和arguments的关系:
两者互相影响
function fn(a) {
console.log(a, arguments);
a = 50;
console.log(a, arguments);
arguments[0] = 100;
console.log(a, arguments);
};
fn(30);
形参
定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。
形参的本质是一个名字,不占用内存空间
// 传参
// 函数的形参在函数被调用的第一行代码优先执行, 形参接收实参, 执行函数体
// 函数每调用形成一个新的局部作用域, 代码的解析过程遵循预解析过程
function fun(a) {
console.log(a);
var a = 30;
console.log(a);
};
fun(10);
/*
解析过程:
function fun(a) {
console.log(a);
var a = 30;
console.log(a);
解析过程:
var a;-->声明形参
var a;
a = 10; ---> 接收实参
console.log(a); // 10
a = 30;
console.log(a); // 30
};
fun(10);
*/
实参
可以是常量、变量或表达式, 无论实参是何种类型的量,在进行函数调用时,都必须具有确定的值, 以便把这些值传送给形参。
在调用函数过程中,系统会把实参的值传递给被调用函数的形参。或者说,形参从实参得到一个值。该值在函数调用期间有效,可以参加该函数中的运算。