函数定义和调用
在JavaScript中,函数是一段可重用的代码块,用于执行特定的任务。函数可以接受参数,并且可以返回一个值。以下是函数定义和调用的示例:
// 函数定义
function sayHello() {
console.log("Hello!");
}
// 函数调用
sayHello();
上述代码定义了一个名为sayHello
的函数,它没有参数。当调用sayHello()
时,控制台将输出"Hello!"。
函数可以接受参数,如下所示:
function greet(name) {
console.log("Hello, " + name + "!");
}
greet("Alice"); // 输出:Hello, Alice!
greet("Bob"); // 输出:Hello, Bob!
上述代码定义了一个名为greet
的函数,它接受一个参数name
。通过在函数调用时提供参数,我们可以向函数传递不同的值。
作用域和闭包
在JavaScript中,每个函数都有自己的作用域,作用域决定了变量的可见性和访问权限。在函数内部声明的变量只在函数内部可见,称为局部变量。而在函数外部声明的变量称为全局变量,可以在整个程序中访问。
function sayHi() {
var message = "Hi!";
console.log(message); // 输出:Hi!
}
sayHi();
console.log(message); // 报错:message is not defined
上述代码中,变量message
在sayHi
函数内部定义,因此只能在函数内部访问。在函数外部访问message
将导致报错。
闭包是指函数能够访问其外部作用域中的变量,即使在函数外部调用时。这是由于JavaScript的函数是词法作用域(lexical scope)的。
function createCounter() {
var count = 0;
return function() {
count++;
console.log(count);
};
}
var counter = createCounter();
counter(); // 输出:1
counter(); // 输出:2
counter(); // 输出:3
上述代码中,createCounter
函数返回了一个内部函数。内部函数引用了createCounter
函数的作用域中的变量count
。每次调用counter
函数时,count
的值都会增加并输出。
示例代码
以下是一个演示函数定义、调用和作用域的示例:
// 函数定义
function calculateArea(radius) {
var pi = 3.14;
var area = pi * radius * radius;
return area;
}
// 函数调用
var radius = 5;
var result = calculateArea(radius);
console.log("半径为" + radius + "的圆的面积是:" + result);
上述代码定义了一个名为calculateArea
的函数,它接受一个参数radius
,计算并返回圆的面积。然后,我们通过提供半径的值
来调用该函数,并将计算结果存储在result
变量中,并在控制台输出结果。
通过理解函数的定义、调用和作用域,你可以在JavaScript中编写灵活和可重用的代码,并完成各种任务。