1.创建函数
<script>
// 构造函数
// 常规
function aa(){
}
// 匿名函数
var ab = function(){
console.log('dd');
}
ab();
// 通过构造函数构造
var ac = new Function('a','b','return a+b');
console.log(ac(1,3));
</script>
2.return 作用
- 返回值
- 中断函数执行
- 只能用于函数中
3.变量的作用域和作用域链
- 变量
- 全局变量
- 挂载到window对象
<script> var a=1; // a即为全局变量 console(window.a); // 1 </script>
- 局部变量
<script> function aa(){ var a = 1; } </script>
- 全局变量
4.函数隐藏的参数arguments
- 用来取参
- 传入的实参都能在函数体里,通过arguments数组取到
- 具有数组的⼀些特点
- 可以通过索引取参
- 有长度
<script>
// 构造函数
function sum(a,b){
console.log(arguments); // Arguments(6) [1, 2, 3, 4, 5, 6
console.log(arguments[5]); // 6
console.log(arguments.length); //6
return a+b;
}
console.log(sum(1,2,3,4,5,6)); // 3
</script>
5.递归
- 何为递归
- 函数自己调用自己
- 注意:必须得有终止条件,否则函数将一直递归形成死循环,造成栈空间不足
<script> function sum(i) { if (i == 1) { return 1; } return i + sum(i - 1); } </script>
6.立即执行函数(IIFE)
- 特点
- 匿名函数
- 自动执行,执行完后销毁
- 用法
(function() {
...
})();
(function() {
...
}());
用例:
<script>
// 立即执行函数,后面的小括号可以传入参数
// 写法1
(function sum(a, b) {
var res = a + b;
console.log('res:' + res);
})(100, 100);
// 写法2
(function sum(a, b) {
var res = a + b;
console.log('res:' + res);
}(1, 2))
</script>
- 注意
- 立即执行函数前面的语句必须加油分号,否则解析错误