一、函数参数与返回值
1、函数参数
当函数的形参多于函数的实参,多出来来的形参为undefined,
当函数的实参多于函数的形参,多出来的实参会被存放到伪数组arguments中去
2、一般会给形参一个默认值,防止传递的实参和形参不等时出现问题,同时当没有参数传递时,就会等于默认值,如:有两个形参,但 只传递一个实参时,如果是数字加减乘除等操作,那么一个形参传递到的参数是数字,另一个形参没有接受到实参,所以为 undefined,那么结果为NaN 或者会报错
3、return 也有终止函数的效果,函数体内return后面的代码不在执行
当函数内部的结果给函数外部使用时,用返回值
①指令 return
可以在函数的任意位置。当执行到达时,函数停止,并将值返回给调用代码
②⭐⭐空值的 return
或没有 return
的函数返回值为 undefined
③⚠不要在 return
与返回值之间添加新行 对于 return
的长表达式,可能你会很想将其放在单独一行,如下所示:
return
(some + long + expression + or + whatever * f(a) + f(b))
js在解析上面的代码时,因为换行的原因,解析器会在return后面自动加上;号 因此,实际上它的返回值变成了空值。 所以上面代码的返回值为undefined,如下:
return;
(some + long + expression + or + whatever * f(a) + f(b))
④return a,b的返回值是b
二、函数定义
1、 匿名函数 (函数表达式)
let fn = function(){}:匿名函数必须先声明后使用
①⭐⭐立即执行函数
(function(){}());或者(function(){})() ; 多个匿名函数之间必须有;分割 ,否则js会将前后的小括号解析为是一起的
⭐⭐为了避免全局变量冲突 // 一般用立即执行函数将外部js代码包裹起来,这样变量变为局部变量,就防止了冲突⭐⭐
2、具名函数(函数声明)
可以先使用在声明
function fn(){}:具名函数和var的声明都有一个提升效果,都会提升到当前作用域的最上方,var的提升只能提前声明变量,没有 赋值,函数的提升是整个代码块的提升
3、逻辑中断
如下所示;
<script>
console.log(flase || 1);//1
console.log(true || 1);//true 不会进入||后面
console.log(true && 1);//1
console.log(false && 1);//1
</script>