代码改变世界

浅谈函数的分类,函数的实参副本以及预解析

2019-08-20 22:03  孤城凉梦  阅读(374)  评论(0编辑  收藏  举报

函数

什么是函数

函数:一段预定义好的可以反复执行的代码块

容器 盒子 里面放代码块,可以在需要的时候执行

预定义好:不会立即执行 使用时候执行(调用)

反复执行:反复执行

系统函数

js定义好的函数,用户可以直接使用

alert() parseInt() parseFloat() ...

自定义函数

1,声明式  定义函数
语法
function 函数名(){
代码块;
//函数体

}
调用:函数名()
注意:函数可以在任意位置调用(在函数定义之前的位置调用) 建议使用声明式定义函数
2,赋值式定义函数
语法:
var fn=function(){
代码块;
}
调用:函数名()
注意:函数必须先定义,在调用   使用较少
函数优势:
可以在任意位置调用
可以反复执行

有参函数


语法:
function fn(形参集合){ //以,分割
代码块
}
调用时:
fn(实参集合); //以,分割
注意:
形参:在函数内部声明的变量,声明时没有赋值(在调用的时候赋值(实参))
实参:函数调用时传的实际的值,给形参赋值
形参和实参之间 --对应的
参数:赋予函数更灵活的应用,允许函数中有不同的值参与运算

参数怎么提取:找变化的东西 提取为参数

函数返回值

return
注意:
1,必须要写在函数体内部
2,return后面是什么,函数运行结束后,就是什么
3,函数遇到return会立刻停止

短路  
表达式1||表达式2 做函数参数默认值
function fn(a,b){
b=b||2;
}
三目运算符:
表达式1?表达式2:表达式3
表达式1的值 如果为true则表达式2执行,否则表达式3执行
a+b
功能:
封装有功能函数 复用
代码优化
思考:
return 后面如果有多行代码
return 后面的值(表达式) 是不能换行的
如果需要换行 +()

函数实参副本 了解一下

副本:复制一份  备份
arguments 写在函数体内部
保存了函数调用时传的实参集合
是一个集合(类数组)
集合[下标]
arguments.length 返回 集合的长度
函数体内:函数.length形参长度

预解析

js在运行之前 做两件事情
1,找 var 声明的变量,将var声明的变量的声明提升到当前作用域的顶部,赋值保留在元素 声明提前**
2,找到function 声明的代码块 将整个函数 提升到当前作用域顶部