发布于 2026-01-06 0 阅读
0

JavaScript 函数完整指南

JavaScript 函数完整指南

JavaScript 函数完整指南

入门!

首先,我鼓励你跟着这篇文章一步一步来。这不仅能帮助你更好地学习,还能帮助你记住已经学过的内容。我们先来创建一个新的 HTML 文件,并<script>在其中添加一个标签:

<!DOCTYPE html>
<html>
    <head>
        <title>If statements are awesome!</title>
    </head>
    <body>
        <h1>JavaScript :)</h1>
        <script>
            // Our script will go here!
        </script>
    </body>
</html>
Enter fullscreen mode Exit fullscreen mode

完成后,在浏览器中打开即可!(每次更改后别忘了保存并重新加载页面)

什么是函数?

函数其实就是一小段 JavaScript 代码,你可以反复运行它。你甚至可以给它不同的输入和输出!

语法

目前,我们先来看最简单的函数类型:

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}
Enter fullscreen mode Exit fullscreen mode

首先,我们要声明函数。方法是先写出函数名function,然后再写出函数本身。这类似于声明变量(var variableName类似于 `var` function functionName)。在函数名后面,是一组空的括号/圆括号/或者你称之为其他什么:()`.`

如果它们是空的,那它们有什么用呢?嗯,这里是用来放置函数输入参数的地方。目前,我们的函数没有任何输入参数,所以我们先留空。稍后我会在本文中详细讲解输入参数(敬请期待😉)。

之后,我们会看到一组花括号(最后一个花括号在第四行)。函数中的所有代码都写在这些花括号内。

运行(也称为“调用”)函数

现在你知道它是如何工作的了,让我们运行一下!把它放到你的<script>标签里,保存,然后重新加载页面……

什么?!什么都没发生!好吧,关键在于——我们只是声明了这个函数,并没有真正运行它。我们只是告诉计算机“嘿,神奇的计算机,这是一段代码,它的名字是…… myFirstFunction”。但是,我们并没有告诉计算机运行函数内部的代码!下面我们来看一下:

myFirstFunction();
Enter fullscreen mode Exit fullscreen mode

如你所见,我们通过引用函数名来运行它。接下来是一组空的括号。这里原本是函数输入参数的位置,但我们现在还没有任何输入,所以仍然留空。现在运行你的函数!看看你能不能把它放在代码的哪个位置:

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}

myFirstFunction();
Enter fullscreen mode Exit fullscreen mode

在这段代码中,它位于末尾。但是,它也可以位于函数之前!这与变量非常不同,变量必须在使用声明。以下代码行不通:

alert(myVariable);

var myVariable = "Hello";
Enter fullscreen mode Exit fullscreen mode

然而,这样做会:

myFirstFunction();

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}
Enter fullscreen mode Exit fullscreen mode

通常的做法是将所有函数定义放在脚本的底部,但这其实并不重要。

好了,现在到了你可能一直期待的时刻——试试看!确保你的脚本代码和上面的一样(不过记住,在声明函数之前或之后运行它都无所谓)。保存,重新加载,瞧!函数内部的代码现在已经运行了!

一开始,这看起来似乎有点小题大做——为什么不直接运行代码呢?但是,想象一下,如果你想让这段代码在脚本中的多个不同位置运行——比如在循环、if 语句等等。那么,只需要简单地写上“运行”语句myFirstFunction();就方便多了!特别是当你的函数有 30 行代码的时候😅

带输入的函数

在函数中myFirstFunction,我们设置了一个变量(x),5然后发出警报(10)。如果我们创建一个名为的函数,该函数发出alertDouble警报,提示将任意数字翻倍,会怎么样?

在这种情况下,我们只有一个输入——我们称之为num。以下是以num为输入的函数声明:

function alertDouble(num) {

}
Enter fullscreen mode Exit fullscreen mode

现在,在花括号内,我们可以将其用作num变量!(仅限花括号内

看看你能不能想出最终的函数是什么样子……

function alertDouble(num) {
    alert(num * 2);
}
Enter fullscreen mode Exit fullscreen mode

你答对了吗?如果答对了,那就太好了!如果没答对,也别担心——希望读完这篇文章后,你就能明白了🙏

运行带有输入的函数

是时候运行我们的函数了!我们来尝试将几个不同的数字翻倍:

  • 2
  • 70
  • 1024

首先,如果你愿意,可以保留现有代码的这一部分:

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}
Enter fullscreen mode Exit fullscreen mode

不过,我们已经完成了这项工作,不想再运行它了。所以,请删除或注释掉这一行:

myFirstFunction();
Enter fullscreen mode Exit fullscreen mode

相反,我们要调用我们的新函数alertDouble!首先,我们需要在代码末尾添加函数声明:

//myFirstFunction();

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}

function alertDouble(num) {
    alert(num * 2);
}
Enter fullscreen mode Exit fullscreen mode

现在来运行我们的函数!如果没有输入参数,我们只需直接写 `nil` 即可alertDouble()。但是,我们需要把 `nil` 的输入参数num放在括号里!所以,我们来试试把 2 翻倍——看看你能不能猜出代码!

alertDouble(2);
Enter fullscreen mode Exit fullscreen mode

2括号内的内容num函数运行时就会变成函数内部的内容!试试看……

//myFirstFunction();

alertDouble(2);

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}

function alertDouble(num) {
    alert(num * 2);
}
Enter fullscreen mode Exit fullscreen mode

哇!它发出警报了4!🎉
我们来试试其他值……

//myFirstFunction();

alertDouble(2);
alertDouble(70);
alertDouble(1024);

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}

function alertDouble(num) {
    alert(num * 2);
}
Enter fullscreen mode Exit fullscreen mode

太好了!现在它会发出警报4140然后2048……该继续了……

具有多个输入的函数

在函数中alertDouble,我们乘以num2。如果我们想创建一个名为的函数,alertMultiplied该函数会弹出一个输入乘以另一个输入的结果,该怎么办呢?这里我们需要两个输入:假设是num1num2

首先,我们需要声明函数!当函数有多个输入参数时,它们之间用逗号分隔——看看你能不能弄明白!

function alertMultiplied(num1, num2) {

}
Enter fullscreen mode Exit fullscreen mode

然后,只需简单地发出警报num1并乘以num2

function alertMultiplied(num1, num2) {
    alert(num1 * num2);
}
Enter fullscreen mode Exit fullscreen mode

运行具有多个输入的函数

首先,注释掉(或删除)所有doubleMe函数调用,如下所示:

//myFirstFunction();

//alertDouble(2);
//alertDouble(70);
//alertDouble(1024);

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}

function alertDouble(num) {
    alert(num * 2);
}
Enter fullscreen mode Exit fullscreen mode

现在,让我们alertMultiplied在代码末尾添加函数声明!

//myFirstFunction();

//alertDouble(2);
//alertDouble(70);
//alertDouble(1024);

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}

function alertDouble(num) {
    alert(num * 2);
}

function alertMultiplied(num1, num2) {
    alert(num1 * num2);
}
Enter fullscreen mode Exit fullscreen mode

最后,是时候运行这个函数了。我们来试试分别乘以53看看你能不能理解这段代码(提示:输入值之间用逗号分隔,就像声明部分一样 😉)。821

//myFirstFunction();

//alertDouble(2);
//alertDouble(70);
//alertDouble(1024);

alertMultiplied(5, 3);
alertMultiplied(8, 21);

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}

function alertDouble(num) {
    alert(num * 2);
}

function alertMultiplied(num1, num2) {
    alert(num1 * num2);
}
Enter fullscreen mode Exit fullscreen mode

保存,重新加载,看看会发生什么!应该会弹出提示框,15后面跟着一个点168

具有输出的函数(即“返回”某些内容的函数)

函数除了有输入之外,还可以有输出!但是,一个函数只能有一个输出(与输入不同)。

我们来创建一个名为 `getResult` 的函数triple。但是,与 `getResult` 不同alertDouble,它不会弹出结果提示框,而是会直接输出结果!

要输出结果,我们只需在函数内部定义输出语句return,然后加上我们想要输出的内容。例如:

function introduce() {
    return 'Hello, I'm Johnny.';
}
Enter fullscreen mode Exit fullscreen mode

注意,这里不需要括号!不过,你也可以加上,因为括号是可选的。我个人喜欢加上括号,因为这样更容易理解,但最终决定权在你。加上括号后,代码会是这样:

function introduce() {
    return('Hello, I'm Johnny.');
}
Enter fullscreen mode Exit fullscreen mode

显然,返回的值不一定是字符串。

我们来尝试编写这个triple函数!它需要一个输入值,num并输出该值的三倍。看看你能不能想出这个函数应该是什么样子!

function triple(num) {
    return(num * 3);
}
Enter fullscreen mode Exit fullscreen mode

运行有输出的函数(获取输出)

这一切都很好,但是我们如何才能真正获得这个函数的输出结果呢?我们只需运行它即可!

实际的函数调用结果将等于输出结果,就像变量等于某个值一样。然后,我们可以像使用变量一样使用该函数。例如,我们可以这样写:

alert( triple(10) );

function triple(num) {
    return(num * 3);
}
Enter fullscreen mode Exit fullscreen mode

这里,我们会显示输出结果triple(10)。试试看!别忘了添加声明并注释掉对的调用alertMultiplied

//myFirstFunction();

//alertDouble(2);
//alertDouble(70);
//alertDouble(1024);

//alertMultiplied(5, 3);
//alertMultiplied(8, 21);

alert( triple(10) );

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}

function alertDouble(num) {
    alert(num * 2);
}

function alertMultiplied(num1, num2) {
    alert(num1 * num2);
}

function triple(num) {
    return(num * 3);
}
Enter fullscreen mode Exit fullscreen mode

哇!代码会发出警报30!我们也可以triple像使用其他任何数字一样使用该函数:

var x = (triple(6) + 3) * 2;
alert(x);
Enter fullscreen mode Exit fullscreen mode

这就像说(18 + 3) * 2,这等同于42(当然,这就是人生的意义😉)。试试看!

//myFirstFunction();

//alertDouble(2);
//alertDouble(70);
//alertDouble(1024);

//alertMultiplied(5, 3);
//alertMultiplied(8, 21);

alert( triple(10) );
var x = (triple(6) + 3) * 2;
alert(x);

function myFirstFunction() {
    var x = 5;
    alert(x * 2);
}

function alertDouble(num) {
    alert(num * 2);
}

function alertMultiplied(num1, num2) {
    alert(num1 * num2);
}

function triple(num) {
    return(num * 3);
}
Enter fullscreen mode Exit fullscreen mode

现在发出警报后30,我们的代码也会发出警报42!🎉

函数内部的变量作用域

我们快完成了!😅
不过,关于函数还有一件重要的事情需要了解——在函数内部声明的变量在函数外部不起作用。什么?这里有个例子——试试看!

function myFunc() {
    var myVar = 3;
}

myFunc();
alert(myVar);
Enter fullscreen mode Exit fullscreen mode

它应该会弹出错误代码 3,对吧?不对!因为这个变量是在函数内部myVar声明的,所以它在函数外部并不存在。这段代码无法运行,并会抛出以下错误:

未捕获的引用错误:myVar 未定义

然而,这确实有效!

var myVar = 1;

function myFunc() {
    myVar = 3;
}

myFunc();
alert(myVar);
Enter fullscreen mode Exit fullscreen mode

代码会发出警告3!因为该myVar变量已经在函数外部声明,所以代码知道它的存在。即使它在函数内部被修改,代码仍然可以发出警告,因为它在函数外部就已经被定义。

这被称为全局作用域。这意味着在代码的其余部分,该变量myVar将被定义。在第一个示例中myVar,变量在函数内部声明,因此它是在函数作用域内声明的。这意味着该变量只会在函数的花括号定义。

这可能需要一些时间才能理解,但你最终会明白的。你需要记住的最重要的一点是,如果你想在函数外部使用一个变量,首先要在函数外部声明它。你甚至不需要写var myVar = 1;`var`——你只需要声明var myVar;它就足够了。我以后可能会写一篇更详细地讲解变量作用域的文章

结论

呼!😅
内容真不少,你能坚持看完真是太棒了!和往常一样,继续练习,你最终一定能掌握的。如果你需要任何帮助,欢迎随时给我发邮件在评论区留言

如果你从这篇文章中学到了什么,如果你能请我喝杯咖啡,我会非常感激。我已经免费写了53000字,而且还在不断增加,希望能帮助像你一样的人学习网页开发。如果你能给我一点小小的支持,那就太好了😉。虽然看起来不多,但积少成多。如果每个阅读过本网站文章的人都给我1美元,我现在可能已经接近最低时薪了!

如果你认识的人觉得这篇文章或这个博客对他们有帮助,那就分享给他们吧——他们以后会感谢你的😜

最后,如果您想每周在邮箱里收到一些关于 Web 开发的实用技巧,帮助您学习 JavaScript,请留下您的邮箱地址,我会尽快发送给您😜

点击这里注册 :D

好了,今天就到这里!祝大家编程愉快,下次再见!下次我会详细讲解JavaScript 中的数组(也叫列表)。下次见!👊


想阅读更多类似文章?请订阅我的电子报

我花了很多心思制作这些教程,目前还没有从中获利,所以如果您能注册,我将不胜感激 ;)

本文最初发表于Code The Web,这是一个轻松有趣的博客,旨在帮助你学习 Web 开发🚀
学习内容:HTML | CSS | JavaScript

文章来源:https://dev.to/codetheweb/the-complete-guide-to-javascript-functions-2i0l