1.函数
数学函数:
x,y 任意的x => 确定的y
其中x自变量
y = f(x) 函数值就是确定的,具有确定性
函数式编程:
- 一个固定的功能或者是程序段被封装的过程
- 实现一个固定的功能或者程序
- 在这个封装体中需要一个入口,一个出口
- 入口就是参数, 出口就是返回
function test(a, b,..){// 执行语句}
2.函数的基本写法
1.最基本的写法 => 函数声明
function test(参数) {// 函数执行语句}
函数的命名规则
- 不能以数字开头
- 可以字母_$开头
- 中间可以包含数字字母_$
- 小驼峰命名法 => myWonderfulTest
2.表达式 字面量方法
var test = function test1() {var a = 1,b = 2;console.log(a, b);}; // 注意这里是有分号的, 与任何变量初始化语句一样.// test1(); ✖// 调用使用 test()
匿名函数表达式 函数字面量
var test = function() { // 匿名函数var a = 1,b = 1;console.log(a, b);}
3.函数的组成部分
函数名(可选), 参数(可选), 返回值 (return), 函数执行语句
function 函数名(参数) {// 执行语句return 默认返回undefined}
1.参数
1.1实参,形参
var aa = Number(window.prompt('a'));var bb = Number(window.prompt('b'));// a ,b => 形式上占位,形式参数 形参function test(a, b) {console.log(a + b);}// 实际参数 aa, bbtest(aa, bb);
1.2 形参和实参数量可以不相等
function test(a, b, c){console.log(a, b, c);}test(1, 2); // 1, 2, undefinedtest(1, 2, 3, 4); // 不会报错
2.arguments
实参传入值,函数内部时可以更改实参的值
实参没有传入值,函数内部不能更改
function test(a, b) {console.log(test.length);console.log(arguments.length);}// 1.arguments 长度根据传入的参数的个数决定test(1, 2); // 2 2test(1, 2, 3); // 2, 3
调用一个函数,累加他的实参值
function sum(){var a = 0;// arguments[i] 可以取到传入的实参的值for(var i = 0; i < arguments.length; i++){a += arguments[i];}}
3.return
return 之后函数后续不会执行
- 终止函数的执行
- 返回相应的值 ```javascript function test() { console.log(‘我正在执行’); return; console.log(‘我执行完了就结束这个函数’); }
console.log(test());
<a name="GuoXH"></a># 4.变量<a name="S3uxH"></a>## 全局变量1. 在全局环境下所声明的变量,在任何地方都可以访问1. 函数内部可以定义变量,如 b = 2, 此时的b就是一个全局变量,当函数调用之后,就会定义这个变量,使其能够在函数外部进行访问。<a name="gDgH1"></a>## 局部变量在函数内部被声明的变量,只能在函数内部进行使用,函数外部无法进行访问,并且在函数执行之后,自动销毁。```javascripta = 1;function test1() {var b = 2; // 函数test1所声明的局部变量console.log(a); // 打印出 1function test2() {var c = 3; // 函数test2所声明的局部变量console.log(b); // 打印出 2}test2();console.log(c); // 报错 因为c是函数test2 里面的局部变量,外部没有定义}test1();
5.作业
1、定义一个函数,从wp接受一个饮料的名称,函数返回对应的价格
var drink = window.prompt('选择一个你想要喝的饮料');function priceDrink(drink){switch(drink){case '可乐':return '5元'case '怡宝':return '2元'case '茶派':return '5元'default:return '没有您选择的饮料'}}
2、定义一个函数,wp接收第一个值,接收一个运算符号,接收第二个值,然后进行运算
var num1 = Number(window.prompt('请输入第一个数值'));var operator = window.prompt('请输入运算符号');var num2 = Number(window.prompt('请输入第二个数值'));function computer(num1, operator, num2){switch(operator){case '+':return num1 + num2case '-':return num1 - num2case '*':return num1 * num2case '/':return num1 / num2case '%':return num1 % num2default:return '请您检查输入的值'}}
3.定义一个函数,从wp接收一个n,算出n的阶乘 (不能用for)
var n = window.prompt('请输入您要算出几的阶乘');// 运用递归的算法function factorial(n) {// 出口if(n === 1){return 1}return n * factorial(n - 1);}factorial(5)
4.定义一个函数,从wp接收一个n,算出斐波那契数列的第n位,不能用for循环.
var n = Number(window.prompt('请你输入你想算出第几位的斐波那契数列'));function fabonacci(n) {if( n <= 2){return 1}return fabonacci(n - 1) + fabonacci(n - 2)}console.log(fabonacci(n));
