JavaScript 函数的组成,函数的递归、立即执行函数、call/appaly/bind、caller/callee 函数的意义函数的声明声明方式 // 第一种,一般声明式funtion test1(){}// 第二种,函数字面量赋值式var test2 = function(){}注意: var test = function test1(){ // ... test1()// 内部可调用}console.log(test.name); // 打印出 test1test(); // 可以执行test1(); // 外部不可见,报错函数命名 - 以字母、$、下划线开头,可包含数字
- 小驼峰命名,myTestFunction
- 工具方法可以使用下划线连接多单词
函数的参数函数的返回值终止函数执行,返回一个值
不写 return,默认返回 undefined // 默认 return undefined 即 retuen;function test(){ // ...}console.log(test); // undefined可以返回任何值 return 1;return false;// 返回数组return [1,2,3];// 返回方法return funtion(){}
全局变量函数体内部可以访问外部声明的变量 var a = 1; // 全局变量function test1() { var b = 2; // 局部变量 console.log(a); // 1 funtion test2() { var c = 3; // 局部变量 console.log(b); // 2 } test2(); console.log(c); // 报错}test1();同级函数内部的局部变量不能相互访问 function test1() { var a = 1;}function test2() { console.log(a);}test2(); // 报错
函数的递归递归算法 大问题可以划分小问题 大问题与小问题解决思路一致 写出递推公式 找出终止条件 实现递归代码 递归示例 求 n 的阶层 function fact(n) { return n === 0 || n === 1 ? 1 : n * fact(n - 1);}
``` 斐波那契数列 function fb(n) { n <= 0 : return 0 :""; n <= 2 : return 1 : ""; return fb(n - 1) + fb(n - 2);}立即执行函数call、apply 与 bind改变函数的 this 指向 caller 和 calleecallee 返回 arguments 对应的函数 function test(a, b, c){ console.log(arguments.callee.length); // 函数有 length 属性,返回形参列表长度}test(1, 2, 3); 自执行函数中使用递归 // 计算 1 + 2 + ... + 100(function(n) { if(n <= 1) { return 1; } return n + arguments.callee(n - 1);})(100);caller 返回调用当前函数的函数 function test1() { test2();}function test2() { console.log(test2.caller);}test1(); // 打印出 test1
作者: pgjett
出处: https://pgjett.cnblogs.com
|
|