1. JavaScript函数的定义
JavaScript是一门基于函数的编程语言。函数是JavaScript中最基本的执行单元,它可以接受输入参数并在执行后返回一个值。在JavaScript中,函数通过关键字 function 来定义。
下面是一个简单的例子:
function add(x, y) {
return x + y
}
这个函数叫做add,它有两个参数x和y,分别代表两个相加的数。在函数体内,我们使用 return 语句来返回它们的和。
2. JavaScript函数的基本使用
2.1 调用函数
要调用一个JavaScript函数,我们需要像这样写:
add(1, 2)
这个语句会调用add函数,并将1和2作为参数传递给它。最终,这个语句将会返回3。
2.2 函数表达式
在JavaScript中,我们还可以使用函数表达式来定义函数。函数表达式通常被赋值给一个变量。
var add = function(x, y) {
return x + y
}
与普通函数不同的是,函数表达式可以是匿名的。这意味着我们可以像这样调用一个匿名函数:
var result = function(x, y) {
return x + y
}(1, 2)
这个例子中,我们定义了一个匿名函数,并用括号将它和参数括起来,最后再用另一组括号执行它。result将会得到3。
2.3 函数作为参数
在JavaScript中,我们可以将函数作为参数传递给另一个函数。这种技巧通常被用来实现回调函数。
function sayHello(name) {
alert('Hello, ' + name)
}
function greet(greeting, name) {
greeting(name)
}
greet(sayHello, 'world')
在这个例子中,我们定义了两个函数,sayHello和greet。greet函数接受两个参数,一个是函数greeting,另一个是字符串name。当我们调用greet函数时,它会执行greeting函数并将name作为参数传递给它。在最后一行,我们调用greet函数并传递了sayHello和字符串'world'作为参数。这个程序会弹出一个对话框,显示“Hello, world”。
2.4 函数作为返回值
和函数作为参数一样,我们也可以在JavaScript中返回函数。这种技巧通常被用在函数的柯里化等高级编程技术中。
function makeAdder(x) {
return function(y) {
return x + y
}
}
var add3 = makeAdder(3)
add3(4) // 7
在这个例子中,我们定义了一个makeAdder函数,它接受一个参数x,并返回一个匿名函数。这个匿名函数接受一个参数y,并返回x+y的和。
在最后两行,我们调用makeAdder(3)获得一个新的函数add3,然后再调用add3(4)计算3+4的和。最终的结果是7。
2.5 函数的内部变量
在JavaScript中,函数可以包含内部变量。
function makeCounter() {
var count = 0
return function() {
return count ++
}
}
var counter = makeCounter()
counter() // 0
counter() // 1
counter() // 2
在这个例子中,我们定义了一个函数makeCounter,它返回一个新的匿名函数用于计数。在makeCounter函数内部,我们定义了一个变量count作为计数器。当我们调用返回的匿名函数时,它会自增count并返回它的当前值。
2.6 函数的方法
在JavaScript中,函数也可以作为对象的一个方法使用。
var calculator = {
operands: [],
add: function(x) {
this.operands.push(x)
},
sum: function() {
return this.operands.reduce(function(a, b) { return a + b }, 0)
}
}
calculator.add(1)
calculator.add(2)
calculator.sum() // 3
在这个例子中,我们定义了一个calculator对象,它有两个方法add和sum。当我们调用add方法时,它会将传递的参数添加到operands数组中。当我们调用sum函数时,它会对operands数组中的数字求和并返回结果。
2.7 构造函数
在JavaScript中,我们还可以使用构造函数来创建对象。
function Person(name, age) {
this.name = name
this.age = age
this.greet = function() {
console.log('Hello, my name is ' + this.name + ', and I am ' + this.age + ' years old.')
}
}
var john = new Person('John', 30)
john.greet() // Hello, my name is John, and I am 30 years old.
在这个例子中,我们定义了一个Person函数作为构造函数。当我们用new关键字调用它时,它会返回一个新的对象,该对象拥有一个name属性、一个age属性和一个greet方法。
在最后两行,我们创建了一个名为john的Person对象,并调用它的greet方法。这个程序会在控制台输出“Hello, my name is John, and I am 30 years old.”。
3. 总结
JavaScript函数是这门语言中最基本的执行单元。我们可以使用普通函数、函数表达式、匿名函数等多种方式来定义函数。我们也可以使用函数作为参数或返回值来实现高级的编程技巧。函数可以包含内部变量,并且还可以作为对象的一个方法使用。最后,我们可以使用构造函数来创建对象。