函数使用
分为两步:1.声明函数 2.调用函数
声明函数:
function 函数名(){
函数体
}
function sayHi(){
console.log('hi~');
}
(1)function 声明函数的关键字 全部小写
(2)函数是做某件事情,函数名一般是动词 sayHI
(3)函数不调用自己不执行
函数调用:
函数名();
sayHi();
函数参数
function getSums(start,end){
var sum=0;
for(vae i=0;i<=end;i++){
sun+=i;
}
console.log(sum)
}
getSums(1,10)
参数 | 说明 |
---|---|
形参 | 形式上的参数,函数定义时候传递的参数,并不知道是什么 |
实参 | 实际上的参数,函数调用的时候传递的参数,实参是传递给形参的 |
形参是用来接收实参的
匹配问题
参数个数 | 说明 |
---|---|
实参个数等于形参个数 | 输出结果正确 |
实参个数多于形参个数 | 只取到形参个数 |
实参个数小于形参个数 | 多于 都形参定义undefined,结果为NaN |
函数返回值
function 函数名(){
return 需要返回的结果
}
函数名()
1.我们函数只是实现某种功能,最终结果需要返回给函数的调用者函数名()通过return实现的
2.只要函数遇到return 就把后面的结果返回给函数的调用者 ,函数名()=return后面的结果
return作用
1.return语句下一行的代码不被执行
2.return 只能返回一个值,如果有两个数,隔开;返回最后一个数的值
3.若想返回多个值可以利用数组
4.若我们的函数有return则返回return后面的值,如果没有return则返回undefined
break、continue、return区别
arguments的使用
伪数组:并不是真正意义上的数组
1、具有数组的length属性
2、按照索引的方式进行存储
3、它没有真正意义上数组的一些方法
- 函数可以调用另一个函数,因为函数是独立的代码块
函数声明方式(2种)
1.利用函数关键字自定义函数(命名函数)
function fn(){
}
fn();
2.函数表达式(匿名函数)
var 变量名=function(){};
var fun=function(){
console.log('我是函数表达式');
}
fun();
(1)fun是变量名 不是函数名
(2)函数表达式声明方式和声明变量差不多,只不过变量里面存的值 而函数表达式里存的函数
(3)函数表达式也可以传递参数
作用域
1.全局变量,在全局中都可以使用
2.局部变量 只能在函数内部使用(函数的形参也可以看做局部变量)
3.从执行效率上看两种变量
(1)全局变量只有浏览器关闭的时候才会销毁,比较占用内存资源
(2)局部变量 当我们程序执行完毕后会销毁,比较节约内存资源
作用域链
内部函数访问外部
预解析
js引擎运行js分为两步:预解析 代码执行
(1)预解析 js引擎会把js里面所有的var和function提升到当前作用域的最前面
(2)代码执行 按照代码执行的顺序从上往下执行
- 预解析分为变量预解析(变量提升)和函数预解析(函数提升)
- 1.变量提升 把所有的变量声明提升到当前作用域的最前面 不提升赋值操作
- 2.函数提升 把所有的函数声明提升到当前作用域的最前面 不调用函数