函数:可以理解为函数是存放一段可执行代码的盒子。
函数的定义
在javascript中函数是一段可以被执行或调用任意次数的javascript代码,在数据类型中属于“function"。函数也拥有属性和方法,因此函数也是对象。
函数的创建方法
创建函数可以通过函数声明、函数表达式和构造函数3种方法来实现。
在javascript中函数定义函数声明或函数表达式由关键字function开始,其后跟随这些组成部分:
1.函数名称标识符。函数名称是函数声明语句必须的部分。它的用途就像变量的名字,新定义的函数对象会赋值给这个变量。对函数定义表达式来说,这个名字是可以选的:如果存在,该名字只存在于函数体中,并指代函数对象本身。
2.一对圆括号()。其中包含由0个或多个用逗号隔开的标识符组成的列表,这些标识符是函数的参数名称,它们就像函数体中的局部变量一样。
3.一对花括号{}。其中包含0条或多条javaScript语句。这些语句构成了函数体:一旦调用函数,就会执行这些语句。
一、函数声明
在Javascript中定义一个函数,该函数的关键字function在整个语句块的开始位置,并且存在函数名称标识符的函数代码称为函数声明。
函数的声明方式:
1.声明式
function 函数名(参数列表){
函数体
}
2.赋值式
var 变量名=function(参数列表){
函数体
}
函数声明代码语法:
function examplefunction(){ console.log("这是一个函数声明示例"); }
匿名函数的常用用途:
事件绑定处理函数
赋值式函数
自执行函数
回调函数
fn和fn()的区别:前者表示函数本身,后者表示对函数的调用,后者值为函数的返回值。
arguments:系统内置的一个对象,存在于函数内部。主要用于存储函数传入的参数。
形参和实参
实参:在函数调用时,写在小括号中的值。
形参:在函数声明时,定义在小括号中的变量就是形参。
传参:函数调用过程中,将实参的值传递给形参的过程。
回调函数
function fn(callBack){ setInterval(function(){ if(n==30){ callBack(); document.write("一句话"); clearInterval(timer); } n++;},100); } function callBack(){ document.write("n变成30了"); } fn(callBack);
二、函数表达式
函数表达式:在Javascript中定义一个函数,该函数整体作为变量的赋值语句或者调用执行的语句而存在,该函数语句称为函数表达式
//函数表达式示例 var f = function exemplefunction() { console.log("这是函数表达式的示例"); } // 这也是函数表达式,函数为匿名函数 var f = function () { console.log("这是一个匿名函数表达式示例"); } // 这还是函数表达式,函数为立即执行函数 (function () { console.log("这还是一个函数表达式示例,为立即执行函数表达式"); })
三、构造函数
通过new关键字来调用的函数称为构造函数。常见的构造函数示例:
//Function 的首字母必须为大写字母。 var f = new Function("a", "b", "return a*b;"); console.log(f);
这行代码创建的一个新函数与通过下面代码定义的函数几乎等价:
var f = function (a, b) { return a * b; } console.log(f);
函数调用后如果没有返回值,返回值默认为undefined
函数的分类:
1.无参无返回值
//求1~20的和
function fn() {
var sum = 0;
for (var i = 1; i <= 20; i++) {
sum += i;
}
console.log(sum);
}
fn()
2.无参有返回值
var a = 10;
function fn() {
return a * 2;
}
console.log(fn());
3.有参数无返回值
// 有参数无返回值
// 需求:1~10的和
// 1~20的和
// function fn() {
// var sum = 0;
// for (var i = 1; i <= 10; i++) {
// sum += i;
// }
// console.log(sum);
// }
// fn()
// function fn() {
// var sum = 0;
// for (var i = 1; i <= 20; i++) {
// sum += i;
// }
// console.log(sum);
// }
// fn()
var sum = 0;
function fn(n) {
for (var i = 1; i <= n; i++) {
sum += i;
}
console.log(sum);
}
fn(10)
fn(20)
4.有参数有返回值
// 有参数有返回值
// 需求:1~10的和
// 1~20的和
// function fn() {
// var sum = 0;
// for (var i = 1; i <= 10; i++) {
// sum += i;
// }
// console.log(sum);
// }
// fn()
// function fn() {
// var sum = 0;
// for (var i = 1; i <= 20; i++) {
// sum += i;
// }
// console.log(sum);
// }
// fn()
function fn(n) {
var sum = 0;
for (var i = 1; i <= n; i++) {
sum += i;
}
console.log(sum);
return sum;
}
fn(10)
fn(20)
var a=10;
//声明
function fn(){
console.log(a);
}
//调用:函数名+()
//fn()
console.log(a);
console.log(fn());
【注意】如果需要对函数中的结果进行不同的处理,就可以把函数的结果作为返回值,返回到函数外面,让函数的调用者去处理。