函数名称 function () {
//函数代码
函数名();
方法二:函数表达式,函数名可以选择
var 变量 = 函数 () {
//函数代码
};
//虽然函数也是一种数据类型,但是将函数参数赋予变量是可行的,vara=123和这些参数是一样的。
函数调用
函数封装(封装)了一段代码,函数(封装)封装的代码不会被手动运行。 它需要我们在适当的时候调用这个函数。
调用函数:虽然是执行函数中封装的代码。
调用函数句型:函数名();
函数参数数组
函数是用来完成一个功能的,而有时候这个功能的完成需要数据的参与,而这个数据只有在使用函数的时候才能确定。
调用函数时,可以将函数中需要的数据传入函数中,所以需要使用参数。
例如:函数中估计两个数之和,但两个数可以是任意数据;
方法参数定义
写在函数定义中,出现在函数名的()上方
function 函数名称(模式参数1javascript函数变量,模式参数2){
功能码...
函数传入的参数数据称为实参(形参)
执行过程:实参分别为形参和方法参数后执行方法。
函数返回值
功能代码执行结果可能被其他程序使用
函数返回值定义
如果函数执行参数result的数据需要被其他程序使用,可以用return关键字来标记函数执行的结果(返回结果)。
函数 函数名称 (赋值 1, 数组 2) {
//函数代码。
返回函数代码运算结果;
执行过程:第1个形参为num1、第2个形参为num2后,函数被执行。
传入实际参数时注意:
1.实际参数列表的顺序和形式参数的顺序一一对应
2.实际参数列表的类型和形式参数的期望类型一一对应
定义函数三部曲
function 函数名(参数,参数){//功能代码 (函数体)return 返回值;
}var result = 函数名(实参,实参);
分析思路:
从全局入手,根据需求分析语义函数printHello的名称
从函数内部看,不知道数据是否参与运算参数个数num1,num2
函数外部使用函数返回后的结果返回值;
变量的范围是什么?
变量作用域是指变量可以使用的范围。 变量作用域按功能分为两种
全局变量:在函数外部定义的变量可以在整个程序中使用。
局部变量:在特定函数中定义的变量称为局部变量,只能在函数内部使用
全局变量的特殊模式:
定义在函数中不加var,也可以作为全局变量使用。
为什么使用变量作用域
您可以在不同的作用域(函数外部和内部)使用相同的变量名来引用不同的值
如何选择变量的范围
如果变量的数据仅在函数内部使用,请使用局部变量。
如果函数内部和外部都使用变量的数据,请使用全局变量。
系统功能
对于浏览器中已经定义好并通知给计算机的功能(function),我们不需要定义,可以直接使用。
什么功能
String(值):将值转换为字符串
Number( 值):将值转换为数字类型
Boolean(值): 将非布尔类型值转为布尔类型 0 “” null转换为false 其余转换 为true
parseInt (值)转为整数
parseFloat(值):转为小数类型
isNaN(值):判定 值 如果不是数字 返回为true 是数字返回为false
递归函数
在函数体中调用函数本身!
通过递归函数复制1-9的值:
递归函数的先决条件
1.完成用户需要必须是一个函数
2.函数必须有出口
为什么使用递归函数
大问题拆解成小问题javascript函数变量,小问题和大问题的解决思路是一样的! 它常常使功能描述简洁但易于理解。
递归调用的特点
递归算法强调的“重复”一般有三个要求:
一是每次调用的规模缩小(通常减半);
二是相邻两次重复之间有紧密的联系,前一次要为下一次做准备(一般是前一次的输出作为下一次的输入);
第三是当问题规模极小时,必须直接给出答案,无需递归调用,因此每次递归调用都是有条件的(条件是规模没有达到直接答案的大小),并且无条件递归调用会变成无限循环,无法正常结束。
总结:
递归点:何时再次调用当前函数
递归退出:当前函数不再被调用时
递归示例
使用递归算法打印1-num的累加
递归点: num+(num-1)
递归出口: num==1 || num==0;
/** 使用递归算法打印1-N的累加*/function f(num){if(num==1 || num==0){return num;}return num+f(num-1);}console.log(f(100));