JS 自定义函数
JS 自定义函数函数就是一组 JavaScript 代码。实用函数可以是代码更为简洁,提高重(chong)用性。如果你断具有特定功能的程序代码需要在程序中多次使用,就可以先把它定义成函数,然后在需要这个功能的地方调用它。
函数的定义和调用
函数的定义可以使用 function 语句。其语法格式如下:
function 函数名 (参数列表) {
函数体
}
例如:
// 定义一个不带参数的函数 go
function go() {
console.log("Hello");
}
go(); // 调用 go 函数,将输出 "Hello"
// 定义一个有两个参数的函数 add
function add(a, b) {
console.log(a + b);
}
add(3, 5); // 输出 8 (3 + 5)
// 定义一个有返回值的函数 mul
function mul(a, b) {
return a * b;
}
var a = mul(3, 5); // a 等于 15 (3 * 5)
console.log(a);
注意:当实参个数小于函数定义的形参个数,JS 会自动减多余的参数值设置为 undefined。
如果实参个数大于函数定义的形参个数,那么多余的实参将被忽略。
例如:
function test(a, b) {
console.log(a);
console.log(b);
}
test(3); // 没有指定形参 b,默认为 undefined
递归函数
递归函数就是函数在自身的函数体内调用自身。
使用递归函数时一定要严谨,处理不当就会使程序陷入死循环。并且递归函数只在特定的情况下使用,例如处理皆成问题:
function fac(n) {
/*
当 n 大于 1 时,f(n) 等于 n * f(n - 1)
当 n 小于等于 1 时,f(n) 等于 1
*/
if (n <= 1) {
return 1;
} else {
return fac(n - 1) * n;
}
}
console.log(fac(5)); // 输出 120
全局变量与局部变量
在 JS 中,变量根据作用域的不同可以分为两种,全局变量和局部变量。
全局变量是定义在所有函数之外的变量,作用范围是该变量定义后的所有代码;局部变量是定义在函数体内的变量,只有在该函数中,且在该变量定义后的代码时,才可以使用这个变量。
例如,下面的程序是正确的:
var a = "全局变量";
function test() {
var b = "局部变量";
console.log(a + " " + b); // 输出:全局变量 局部变量
}
test();
下面的程序是错误的:
var a = "全局变量";
function test() {
var b = "局部变量";
console.log(a + " " + b); // 输出:全局变量 局部变量
}
test();
console.log(b); // ReferenceError: b is not defined
如果在函数体中定义了一个与全局变量同名的局部变量,那么该全局变量在函数体中将不起作用。例如:
var a = "全局变量";
function test() {
var a = "局部变量";
console.log(a); // 输出:局部变量
}
test();
在函数体内定义全局变量
在函数体内使用 var 定义的变量为局部变量,如果不使用 var 关键字,那么在函数体内定义的变量就是全局变量。例如:
function test() {
a = "全局变量";
}
test();
console.log(a); // 输出:全局变量 跟C有点关系
页:
[1]