函数的基础知识
函数的定义 function name(params){};
function 定义函数的关键字
name: 函数名字,根据自己的喜好起名
params:参数可以有参数也可以没有,通常将这里面的参数称为形式参数,简称“形参”
{}:这里面写的是函数体,也就是我们编写的业务逻辑
return :将一些我们需要的函数值结果从函数体中返回出来
注意:函数可以有参数,也可以没有,可以有返回值。也可以没有
写函数的意义在于使用,我们写了函数就要去用它,我们使用的过程叫做函数的调用;
函数的调用方法是 name(参数);在函数的最外面书写调用指令,这里的参数代表的是实际参数,简称“实参”;
总结:函数只是一个工具,就是封装一段代码,然后多次调用;上面函数的书写格式就是将一段代码进行封装;
作用域问题
作用域:变量起作用的地方叫做作用域
作用域分为全局作用域和局部作用域
全局作用域:变量可以在全局中使用,变量被称之为全局变量
局部作用域:局部作用域中的变量只能在某个函数体内部使用,变量被称之为局部变量
作用域链:内部函数在访问某个变时,采取的链式查找方法(就近原则)决定该变量的值,这种结构被称之为作用域链
arguments:对象,用来保存传递过来的实参,类似于数组,格式如下:
// function add2(){
// console.log(arguments[2]); //undefined
// var sum = arguments[0] + arguments[1] + arguments[2]+arguments[3]+arguments[4];
// console.log(sum);
// }
// add2(10,20,30,40,50)
// add2(10,20,30,40,50,60,70)
// add2(10,20)
即使我们在定义函数时,没有定义,没有形参,也可以通过arguments在函数体内部接收 实参
函数的表达式
函数共有两种表达式,一种是普通方式,一种是匿名方式
普通方式
// function add(num1,num2) {
// var sum = num1 + num2;
// };
// add(10,20);
匿名方式(函数表达式)
var add = function(num1,num2){
var sum = num1 + num2;
return sum;
};
var res = add(20,30);
console.log(res);
注释:函数表达式声明方式与变量相似 只不过变量里存储的值较为特殊 ,是一个函数,而且函数没有名称,被称之为匿名函数;
函数的提升
// fun1();
// var fun1 = function() {
// console.log('我是一个匿名函数');
// }
// 运行结果 报错: Uncaught TypeError: fun1 is not a function
// 上面一段代码 相当于执行了以下这段代码
// var fun1;
// fun1();
// fun1 = function(){
// console.log('我是一个匿名函数');
// }