函数的使用
与c差不多,不过function在开头。
声明函数的两种方法:
1、利用函数关键字自定义函数(命名函数)
2、函数表达式(匿名函数)
声明函数
命名函数
function 函数名(){
//函数体
}
- function 声明函数的关键字,全部小写
- 函数是做某件事。函数名一般为小写
- 函数不调用,自己不执行
匿名函数
var 变量名 = function(){
//函数体
}
- 变量名不是函数名
- 函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值,而函数表达式里面存的是函数
- 函数表达式也可以传参
调用函数
命名函数
函数名 ();
匿名函数
变量名 ();
形参和实参
参数 | 说明 |
---|---|
形参 | 形式上的参数,函数定义的时候传递的参数,当前并不知道是什么 |
实参 | 实际上的参数,函数调用的时候传递的参数,实参是传递给形参的 |
1、实参个数等于形参,直接匹配;
2、实参个数大于形参,取到形参的个数,多余的直接省略;
3、实参个数小于形参,多余的形参定义为undefined,计算结果为NaN。
函数返回值return
1、return是终止函数,后面的代码不会被执行
2、return只能返回一个值,如果有多个,只返回最后一个
3、如果想要返回多个值,可以利用数组
4、如果函数没有写出return,则表示有隐式的return返回undefined。
变量
1、全局变量
在全局作用域下声明的变量,在全局可以使用
注意:如果在函数内部没有声明直接赋值使用的变量也属于全局变量
2、局部变量
在局部作用于下声明的变量,在函数内部声明的变量就是局部变量
注意:函数的形参也可以看作是局部变量
js引擎运行js,分为两步:预解析和代码执行
预解析:js引擎会把js里面所有的var和function提升到当前作用域的最前面
代码执行:按照代码书写的顺序从上往下执行
预解析
变量预解析(变量提升)和函数预解析(函数提升)
console.log(num);
var num = 10;
相当于下面这个
var num;
console.log(num);
num = 10;