小码哥的IT人生

JavaScript 函数定义

JavaScript基础 2022-04-25 01:50:12小码哥的IT人生shichen

JavaScript 函数定义

JavaScript 函数是通过 function 关键词定义的。

您可以使用函数声明或函数表达式

函数声明

在本教程中稍早之前,您学到了通过如下语法声明函数:

function functionName(parameters) {
   要执行的代码
}

被声明的函数不会直接执行。它们被“保存供稍后使用”,将在稍后执行,当它们被调用时。

示例代码:

function myFunction(a, b) {
     return a * b;
}

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 函数</h1>
<p>此例调用一个执行计算并返回结果的函数:</p>
<p id="demo"></p>
<script>
var x = myFunction(4, 3);
document.getElementById("demo").innerHTML = x;
function myFunction(a, b) {
  return a * b;
}
</script>
</body>
</html>

运行结果:

Javascript 函数

此例调用一个执行计算并返回结果的函数:

12

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

分号用于分隔可执行的 JavaScript 语句。

由于函数声明不是可执行的语句,以分号结尾并不常见。

函数表达式

JavaScript 函数也可以使用表达式来定义。

函数表达式可以在变量中存储:

示例代码:

var x = function (a, b) {return a * b};

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 函数</h1>
<p>函数可以存储在变量中:</p>
<p id="demo"></p>
<script>
var x = function (a, b) {return a * b};
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>

运行结果:

Javascript 函数

函数可以存储在变量中:

function (a, b) {return a * b}

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

在变量中保存函数表达式之后,此变量可用作函数:

示例代码:

var x = function (a, b) {return a * b};
var z = x(4, 3);

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 函数</h1>
<p>函数存储在变量后,变量可以用作函数:</p>
<p id="demo"></p>
<script>
var x = function (a, b) {return a * b};
document.getElementById("demo").innerHTML = x(4, 3);
</script>
</body>
</html>

运行结果:

Javascript 函数

函数存储在变量后,变量可以用作函数:

12

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

上面的函数实际上是一个匿名函数(没有名称的函数)。

存放在变量中的函数不需要函数名。他们总是使用变量名调用。

上面的函数使用分号结尾,因为它是可执行语句的一部分。

Function() 构造器

正如您在之前的例子中看到的,JavaScript 函数是通过 function 关键词定义的。

函数也可以通过名为 Function() 的内建 JavaScript 函数构造器来定义。

示例代码:

var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 函数</h1>
<p>JavaScript 有一个内置的函数构造函数。</p>
<p id="demo"></p>
<script>
var myFunction = new Function("a", "b", "return a * b");
document.getElementById("demo").innerHTML = myFunction(4, 3);
</script>
</body>
</html>

运行结果:

Javascript 函数

Javascript 有一个内置的函数构造函数。

12

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

您实际上无需使用函数构造器。上面的例子这么写也是一样的:

示例代码:

var myFunction = function (a, b) {return a * b};
var x = myFunction(4, 3);

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 函数</h1>
<p id="demo"></p>
<script>
var myFunction = function (a, b) {return a * b}
document.getElementById("demo").innerHTML = myFunction(4, 3);
</script>
</body>
</html>

运行结果:

Javascript 函数

12

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

大多数情况下,您可以避免在 JavaScript 中使用 new 关键词。

函数提升

在本教程中稍早前,您已经学到了“提升”(hoisting)。

Hoisting 是 JavaScript 将声明移动到当前作用域顶端的默认行为。

Hoisting 应用于变量声明和函数声明。

正因如此,JavaScript 函数能够在声明之前被调用:

myFunction(5);
 function myFunction(y) {
     return y * y;
}

使用表达式定义的函数不会被提升。

自调用函数

函数表达式可以作为“自调用”。

自调用表达式是自动被调用(开始)的,在不进行调用的情况下。

函数表达式会自动执行,假如表达式后面跟着 ()

您无法对函数声明进行自调用。

您需要在函数周围添加括号,以指示它是一个函数表达式:

示例代码:

(function () {
    var x = "Hello!!";      // 我会调用我自己
})();

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 函数</h1>
<p>可以在不调用的情况下自动调用函数:</p>
<p id="demo"></p>
<script>
(function () {
  document.getElementById("demo").innerHTML = "Hello! I called myself";
})();
</script>
</body>
</html>

运行结果:

Javascript 函数

可以在不调用的情况下自动调用函数:

Hello! I called myself

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

上面的函数实际上是一个匿名的自调用函数(没有名称的函数)。

函数可用作值

JavaScript 函数可被用作值:

示例代码:

function myFunction(a, b) {
    return a * b;
}
var x = myFunction(4, 3);

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 函数</h1>
<p>函数可以视为值:</p>
<p>x = myFunction(4,3) or x = 12</p>
<p>在这两种情况下,x 都变为值为 12 的数字。</p>
<p id="demo"></p>
<script>
function myFunction(a, b) {
  return a * b;
}
var x = myFunction(4, 3);
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>

运行结果:

Javascript 函数

函数可以视为值:

x = myFunction(4,3) or x = 12

在这两种情况下,x 都变为值为 12 的数字。

12

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

JavaScript 函数可用在表达式中:

示例代码:

function myFunction(a, b) {
    return a * b;
}
var x = myFunction(4, 3) * 2;

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 函数</h1>
<p>函数可以在表达式中使用。</p>
<p id="demo"></p>
<script>
function myFunction(a, b) {
  return a * b;
}
var x = myFunction(4, 3) * 2;
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>

运行结果:

Javascript 函数

函数可以在表达式中使用。

24

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

函数是对象

JavaScript 中的 typeof 运算符会为函数返回 "function"。

但是最好是把 JavaScript 函数描述为对象。

JavaScript 函数都有属性方法

arguments.length 会返回函数被调用时收到的参数数目:

示例代码:

function myFunction(a, b) {
    return arguments.length;
}

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 函数</h1>
<p>arguments.length 属性返回函数接收的参数数量:</p>
<p id="demo"></p>
<script>
function myFunction(a, b) {
  return arguments.length;
}
document.getElementById("demo").innerHTML = myFunction(4, 3);
</script>
</body>
</html>

运行结果:

Javascript 函数

arguments.length 属性返回函数接收的参数数量:

2

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

toString() 方法以字符串返回函数:

示例代码:

function myFunction(a, b) {
    return a * b;
}
var txt = myFunction.toString();

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 函数</h1>
<p>toString() 方法将函数作为字符串返回:</p>
<p id="demo"></p>
<script>
function myFunction(a, b) {
  return a * b;
}
document.getElementById("demo").innerHTML = myFunction.toString();
</script>
</body>
</html>

运行结果:

Javascript 函数

toString() 方法将函数作为字符串返回:

function myFunction(a, b) { return a * b; }

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

定义为对象属性的函数,被称为对象的方法。

为创建新对象而设计的函数,被称为对象构造函数(对象构造器)。

箭头函数

箭头函数允许使用简短的语法来编写函数表达式。

您不需要 function 关键字、return 关键字和花括号。

示例代码:

// ES5
var x = function(x, y) {
  return x * y;
}
// ES6
const x = (x, y) => x * y;

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 箭头函数</h1>
<p>使用箭头函数,您不必键入 function 关键字、return 关键字和花括号。</p>
<p>IE11 或更早版本不支持箭头功能。</p>
<p id="demo"></p>
<script>
const x = (x, y) => x * y;
document.getElementById("demo").innerHTML = x(5, 5);
</script>
</body>
</html>

运行结果:

Javascript 箭头函数

使用箭头函数,您不必键入 function 关键字、return 关键字和花括号。

IE11 或更早版本不支持箭头功能。

25

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

箭头函数没有自己的 this。它们不适合定义对象方法。

箭头函数未被提升。它们必须在使用前进行定义。

使用 const 比使用 var 更安全,因为函数表达式始终是常量值。

如果函数是单个语句,则只能省略 return 关键字和大括号。因此,保留它们可能是一个好习惯:

示例代码:

const x = (x, y) => { return x * y };

完整实例:

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 箭头函数</h1>
<p>IE11 或更早版本不支持箭头功能。</p>
<p id="demo"></p>
<script>
const x = (x, y) => { return x * y };
document.getElementById("demo").innerHTML = x(5, 5);
</script>
</body>
</html>

运行结果:

Javascript 箭头函数

IE11 或更早版本不支持箭头功能。

25

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

IE11 或更早的版本不支持箭头函数。

版权所有 © 小码哥的IT人生
Copyright © phpcodeweb All Rights Reserved
ICP备案号:苏ICP备17019232号-2  

苏公网安备 32030202000762号

© 2021-2024