JavaScript的编程离不开函数,因为其中很多功能都来自于函数,通过函数我们可以实现丰富多样的功能,这也极大的提高了我们的开发效率。
通常可以function关键字+函数名来定义一个函数,使用时在函数名后面加一对括号即可
// 定义一个函数
function sum(){
return 123
}
// 调用函数
sum()
我们定义了函数在调用的时候,在函数名后面的括号内传入参数即可,而在函数名后面的括号内接收传递的参数即可。函数的参数分为形参和实参,形参是指定义函数时使用的参数,实参是指在调用函数时所传递的参数。函数的参数可以传递1个或多个,多个参数直接用逗号分隔,有效的参数将取决于实参的个数,多余的形参将自动被忽略掉。
arguments是函数内置的一个变量,它主要返回的是函数接收的所有参数
function fun(){
return anguments
}
// [1,2,3,4]
fun(1,2,3,4)
在JavaScript引擎中有一些内置的函数可以供我们随时调用,这就是内置函数。
parseInt() 将传入的任意参数转为整数,如果转换失败就返回NaN
parseFloat() 与parseInt的功能基本相同,只不过它可以保留小数
isNaN() 判断传入的参数是否“非数值”或者说不是数值
eval() 可以将字符串当做JavaScript代码来执行
alert()函数就是显示一个对话框,alert会阻塞当前的浏览器线程,在弹框关闭之前所有的代码都会停止执行。
在函数内部声明的变量叫做局部变量,只有在函数内部才可以访问,在其外部是访问不到的;在函数外部声明的变量叫做全局变量。另外需要注意一点,在函数内部声明的变量,在调用函数之前是不存在的,并且在函数执行完这个变量就会立即被销毁
function sum(){
var a = 123;
console.log(a) // 123
}
sum()
a // undefined
变量提升指的是在函数内部声明的变量,会被提升到函数的最顶部或者说是函数最开始的地方,只提升变量的声明而对于变量的赋值还会留在原来的位置上,这就是变量提升
function sum(){
var a; // 相当于变量的声明被提升到了这里
a // 此时访问变量a 返回的是 undefined
a = 123; // 其实变量的赋值还留在原地
a // 123
}
也就是说可以将一个函数赋值给一个变量。
var sum = function(a, b){
return a + b
}
sum(1, 2) // 3
回调函数:将函数a传递给函数b,并且由b执行了a,那么a就是b的回调。以上就是回调函数的简单概念。
// 有一个函数addnum,对传入的参数加10再返回
var addnum = function(a){
return a + 10
}
// 还有一个函数,对传入的三个参数分别乘以2再返回
var twoFunction(a,b,c){
var i,arr = []
for(i=0; i<3; i++){
arr[i] = arguments[i] * 2
}
return arr
}
// 现在有一个需求:给twoFunction函数传入的参数乘以2再加上10,那么我们就可以使用回调函数来改造一下
var twoFunction(a, b, c, callback){
var i,arr = []
for(i=0; i<3; i++){
arr[i] = callback(arguments[i] * 2)
}
return arr
}
var myarr = twoFunction(10, 20, 30, addnum);
myarr() // 30, 50, 70
这就是回调函数的用法,可以将一个函数传递给另一个函数。这样做的好处是节省了变量名的使用;将一个函数的调用委托给另一个函数,可以节省代码编写工作。