开门见山——JS函数
-
函数也是一个对象。
-
函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码)。
-
函数中可以保存一些代码在需要的时候调用。
-
使用 typeof 检查函数对象时会返回 function。
创建一个函数对象:
var fun = new Function("console.log('Hello, World');");//实际开发中很少使用构造函数来创建一个函数对象
//封装到函数中的代码不会立即执行
//函数中的代码会在函数调用的时候执行
//调用函数 语法:函数对象()
//当调用函数时,函数中封装的代码会按顺序执行
fun();
函数对象具有所有普通对象中的功能,且能封装可执行代码。
使用 函数声明 来创建一个函数
-
语法:
function 函数名([形参1, 形参2, …形参N]) {
语句…
}
function fun2(){
console.log('Hello, World');
}
//调用fun2
fun2();
使用 函数表达式 来创建一个函数
-
语法:
var 函数名 = function([形参1, 形参2, …形参N]) {
语句…
}
//将匿名函数赋值给一个变量。
var fun3 = function(){
console.log('Hello, World');
}
//调用fun3
fun3();
匿名函数
-
语法:
function() {
alert(“我是匿名函数。”);
}
这样没有变量接收它会报错。加个( )变成函数对象
(function() {
alert(“我是匿名函数。”);
})
-
立即执行函数:
函数定义完立即被调用。往往只会执行一次。
(function() { alert("我是匿名函数。"); })(); (function(a, b) { console.log(a + ', ' + b); })(1, 2); // 输出:1, 2
函数的参数
例:定义一个求两数之和的函数
- 可以在函数的 ( ) 中指定一个或多个形参
- 多个形参之间使用,隔开。声明形参就相当于在函数内部声明了对应变量
function sum(a, b) {
console.log(a + b);
}
sum(1, 2); //3
调用函数时解析器不会检查实参的类型。
如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined。
- 对象可以作实参。
- 函数也可以作实参,而且常用。如匿名函数:fun(function(){ alert(“hello”); });
函数的返回值
- 使用 return 来设置函数的返回值
- 语法:return 值
- return 后的值会作为函数的执行结果返回,可以定义一个变量来接收该结果。
function sum(a, b) {
c = a + b;
return c;
console.log("不执行");
console.log("不执行");
}
//变量result的值就是函数的执行结果
var result = sum(1, 2);
-
return后的语句不会执行。
-
如果 return 后面没写值,相当于返回一个undefined。函数中不写return,也会返回undefined。
-
return 后可以跟任意类型的值,也可以是对象和函数。
function fun3(){ function fun4(){ alert("我是fun4"); } return fun4; } var a = fun3(); a(); // 执行alert("我是fun4"); fun3()(); // 执行alert("我是fun4"); console.log(a); /* function fun4(){ alert("我是fun4"); } */
例:写一个判断一个数是否为偶数的函数。
function isEvenNum(num) {
return num % 2 == 0;
}