JavaScript-funktion määrittely
- Edellinen sivu JS-objektin viittaus
- Seuraava sivu JS-funktion parametrit
kurssin suositukset: function
JavaScript-funktiot määritelläänAvainsanamäärittää.
voit käyttää funktiota声明tai funktioIlmaisu。
funktioilmoitus
Tässä kurssissa oppisimme aikaisemmin seuraavalla syntaxilla声明Funktio:
function nimi(parametrit) { Suoritettavaa koodia }
Määritetyt funktiot eivät suoriteta suoraan. Ne 'tallennetaan myöhempää käyttöä varten' ja suoritetaan myöhemmin, kun ne kutsutaan.
Esimerkki
function myFunction(a, b) { return a * b; }
Semikololla erotetaan suoritettavia JavaScript-lauseita.
Koska funktio声明Eivät ole suoritettavia lauseita, eivätkä päättymisiä semikololla ole yleisiä.
funktiokuvauksia
JavaScript-funktiot voivat myös käyttääIlmaisumäärittää.
Funktiokuvaukset voidaan tallentaa muuttujiin:
Esimerkki
var x = function(a, b) {return a * b};
Funktiokuvauksen tallentamisen jälkeen muuttuja voidaan käyttää funktiona:
Esimerkki
var x = function(a, b) {return a * b}; var z = x(4, 3);
上面的函数实际上是一个Anonyymit funktiot(没有名称的函数)。
Muuttujassa tallennetut funktiot eivät tarvitse nimeltä. Ne kutsutaan aina muuttujanimellä.
Yllä oleva funktio päättyy semikololla, koska se on suoritettavan lauseen osa.
Function()-rakentajalla
Kuten näitte aikaisemmassa esimerkissä, JavaScript-funktiot määritellään function
avainsanalla määritettyjä.
Funktiot voivat myös olla nimeltä Function()
的内建 JavaScript 函数构造器来定义。
Esimerkki
var myFunction = new Function("a", "b", "return a * b"); var x = myFunction(4, 3);
您实际上无需使用函数构造器。上面的例子这么写也是一样的:
Esimerkki
var myFunction = function (a, b) {return a * b}; var x = myFunction(4, 3);
大多数情况下,您可以避免在 JavaScript 中使用 new
关键词。
函数提升
在本教程中稍早前,您已经学到了“提升”(hoisting)。
Hoisting 是 JavaScript 将声明移动到当前作用域顶端的默认行为。
Hoisting 应用于变量声明和函数声明。
正因如此,JavaScript 函数能够在声明之前被调用:
myFunction(5); function myFunction(y) { return y * y; }
使用表达式定义的函数不会被提升。
自调用函数
函数表达式可以作为“自调用”。
自调用表达式是自动被调用(开始)的,在不进行调用的情况下。
函数表达式会自动执行,假如表达式后面跟着 ()
。
您无法对函数声明进行自调用。
您需要在函数周围添加括号,以指示它是一个函数表达式:
Esimerkki
(function () { var x = "Hello!!"; // 我会调用我自己 }();
上面的函数实际上是一个匿名的自调用函数(没有名称的函数)。
函数可用作值
JavaScript 函数可被用作值:
Esimerkki
function myFunction(a, b) { return a * b; } var x = myFunction(4, 3);
JavaScript 函数可用在表达式中:
Esimerkki
function myFunction(a, b) { return a * b; } var x = myFunction(4, 3) * 2;
函数是对象
JavaScript 中的 typeof
运算符会为函数返回 "function
"。
但是最好是把 JavaScript 函数描述为对象。
JavaScript 函数都有属性和方法。
arguments.length
会返回函数被调用时收到的参数数目:
Esimerkki
function myFunction(a, b) { return arguments.length; }
toString()
方法以字符串返回函数:
Esimerkki
function myFunction(a, b) { return a * b; } var txt = myFunction.toString();
Funktiot, jotka on määritelty objektin ominaisuuksiksi, kutsutaan objektimenetelmiksi.
Funktiot, jotka on suunniteltu luomaan uusia objekteja, kutsutaan objektin rakentajafunktioiksi (objektin rakentajiksi).
Nuolifunktiot
Nuolifunktiot mahdollistavat lyhyen syntaksin käyttöä funktioilmaisuihin.
Funktiokoodi, return-koodi ja sulkeet eivät ole tarpeen.
Esimerkki
// ES5 var x = function(x, y) { return x * y; } // ES6 const x = (x, y) => x * y;
Nuolifunktiot eivät omaa this-muuttujaa. Ne eivät sovellu objektimenetelmien määrittämiseen.
Nuolifunktiot eivät ole määritelty. Ne on määriteltävä ennen käyttöä.
const käytetään variaation sijaan, koska funktioilmaisu on aina vakioarvo.
Jos funktio on yksittäinen lause, voi return-koodi ja sulkeet jättää pois. Siksi niiden säilyttäminen voi olla hyvä tapa:
Esimerkki
const x = (x, y) => { return x * y };
IE11 tai aikaisemmat versiot eivät tue nuolifunktioita.
- Edellinen sivu JS-objektin viittaus
- Seuraava sivu JS-funktion parametrit