乐趣区

JavaScript 函数简介

JavaScript 函数简介
JS 函数的概念
函数就是把特定功能的代码抽取出来,使之成为程序中的一个独立实体,起个名字(函数名)。
函数的作用
正如函数的概念, 我们可以根据代码需要, 将特定的功能用函数来包裹
使用函数的好处

函数可以在同一个程序或其他程序中多次重复使用(通过函数名调用)
使程序变得更简短而清晰
有利于程序维护

函数的分类
函数可以分为: 内置函数 和 自定义函数

内置函数:
是官方提供好的函数,可以直接使用
如: alert(), isNaN(), console.log() parseInt()等

自定义函数: 是用户自己定义的函数, 用户可以根据实际需求, 对特定的功能使用函数来封装

函数定义和调用
函数简单定义
语法格式:
function 函数名() {
代码块;
}
注意:

必须使用 function 关键字, 且为小写, 函数名自定义
函数名的命名规则和变量名一致
函数名后必须写圆括号()

例如:定义一个函数 ShowTips
function ShowTips(x,y){
alert(‘ 我要飞得更高 ’);
}
函数调用
函数的调用方式: 函数名()
function ShowTips(x,y){
alert(‘ 我要飞得更高 ’);
}
ShowTips();

注意:1. 调用函数后会执行函数内部的代码块;2. 函数在不调用的情况下是不会执行的, 只有调用后函数中的代码才会执行
函数标准定义
语法格式:
function 函数名(参数 1,参数 2,……)
{
执行语句;
return 返回值;
}
注意:

函数名后圆括号 () 中的参数数量不定, 也可以没有; (根据功能需要)
return 关键字的作用是将某个值返回, 如果没有返回值则默认返回 undefined;

案例:定义一个函数 Add 求两个数相加之和
function Add(x,y){
var sum=x+y;
return sum;
}

var result=Add(2,3); // 函数调用
alert(result);
注意:1. 函数体语句执行到 return 时,函数就终止代码执行(return 后的代码不会执行)2. 如果 return 后有返回值,则把这个值返回到函数调用执行的地方
形参和实参
形参:
形参就是在函数定义时,函数名后面的参数;
函数的形参跟变量是一样使用, 且不能用 var 修饰
实参:
实参就是调用时,函数名后面的参数

如: 之前定义的函数 Add 中: x 和 y 是形参, 2 和 3 是实参
function Add(x,y){
var sum=x+y;
return sum;
}

var result=Add(2,3); // 函数调用
alert(result);
注意:1. 在传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。2. 因此在函数调用过程中,当形参值发生改变,而实参中的值不会变化。
arguments
arguments: 函数内部隐藏的数组对象,保存着实参的信息,可以直接使用函数在传递参数时就是用这个数组 arguments 来保存的 arguments.length: 保存着实参的数量
函数的作用域
作用域: 就是起作用的范围。或者说有效范围; 这里涉及到另外两个概念。
局部变量:
定义在函数内部的变量,这个变量只能在函数内部使用,即作用域范围只是函数内部,另外,形参也是局部变量.ps: 函数内的变量使用遵循:就近原则
全局变量:
全局变量就是定义在函数外部的变量,这个变量在任何函数中都有效,即作用域范围是当前文件的任何地方.
JavaScript 默认有一个全局对象 window,全局作用域的变量实际上被绑定到 window 的一个属性:
注意: 在定义变量时, 如果不写关键字 var 也是合法的, 且是全局变量, 但是这样写不安全, 容易在其他地方被更改, 所以我们在函数中写变量要加上 var
变量声明提前
语句:
var str1=’abc’;
var sum=str1+str2;
var str2=’hello’;
console.log(sum); //abcundefined
//JavaScript 引擎自动提升了变量 str2 的声明,但不会提升变量 str2 的赋值
函数的嵌套
函数的嵌套: 函数内部可以再包含其他函数; 函数之间允许相互调用(不能同时调用),也允许向外调用, 如果互相同时调用:就会出现死循环
对象函数的定义和调用
对象函数的定义
var 对象 ={
属性名:属性值,
属性方法名:匿名函数
}

调用: 对象. 属性方法名()
事件驱动:
因为函数不会主动执行, 只有当调用的时候才会执行函数中的代码, 在前面的 dom 操作示例中, 我们点击了按钮才触发函数调用
所有的函数,没有调用不会执行,那么在我们浏览器中函数调用的源头在何处,就是事件, 只有使用事件去驱动, 函数才被调用; 如: onclick: 点击事件

示例: 点击搜索按钮调用函数打印出文本框内容, 再清空文本框的内容
函数的递归调用
递归调用:
函数可以自己调用自己, 成为函数的递归调用;
function fact(num){
var sum;
if (num<=1){
sum=1;
}else{
sum=num*fact(num-1);
}
return sum;
}
alert(fact(6));

退出移动版