一、普通函数
1.内置函数:由js语言自己提供,可以直接调用 例如:parselnt、parseFloat
2.自定义函数:是由用户自定义的函数,在后续的程序中可以重复使用的函数。
自定义函数的声明方法:
(1)无参函:function fn(){ //fn是函数名,可以自己命名
console.log('11111');//函数体,根据功能的自己编写
}
fn();//函数的调用,这里的fn,与定义时的fn名字必须一样
注意:函数在声明的时候函数体的代码是不执行的,只有在调用函数的时候函数体的代码才是执行的。
(2)带参函数:
function fn(参数1,参数2......){
console.log(‘132’);
}
fn(参数1,参数2.....);
注意:1)这里的参数个数可以是0个也可以是多个,在声明的时候的参数是形参,在调用的时候的参数是实参。
2)当实参个数多于形参个数的时候,函数调用形参个数的实参。
Eg:function fn(a,b,c){return a+b+c;}
fn(1,1,1,2);//这里函数只会执行1+1+1,2将不会放入函数中执行
3)当实参个数少于形参个数的时候,形参中多于实参个数的参数会以undefined来参与函数的运行。
Eg:Eg:function fn(a,b,c=3){return a+b+c;}
fn(1,1);//这里会返回NaN
(3)带有返回值的函数:
function fn(参数1,参数2......){
console.log(‘1345’);//函数体
return 值;
}
fn(参数1,参数2......);
注意: 1)想要得到返回值,需要定义一个变量对返回值进行接收才行
Eg:var num=fn(参数1,参数2......);//定义一个变量a接收函数的返回值
2)函数中没有添加return,返回结果是undefined;
3)函数有return,如果return后的值为空,返回结果是undefined
4)return后的所有语句都不能被执行到,return就是函数结束。
二、变量作用域
(1)全局作用域:全局作用域下的变量可以在任何位置访问到
(2)局部作用域:局部作用域下的变量只能在局部(函数内部)访问到
注意:函数内部声明的变量没有使用var关键字,声明的变量就成为全局变量。
三、变量提升
js程序在执行前,声明的变量都会加载到程序的最前边(只是提升声明),但是赋值还是在原来的位置。函数内部也存在变量的提升,函数也会被提升。
四、函数的作用域
1. 函数和变量相同,也分为全局作用域和局部作用域。
2.局部(函数)作用域下声明的函数,只能在函数的内部访问。
3.全局作用域下声明的函数,可以在任何的位置访问
4.在程序执行前,声明的函数会提升到程序的最前边。