Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«HTML, XHTML ΠΈ CSS Π½Π° 100%Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 52

Автор Π˜Π³ΠΎΡ€ΡŒ ΠšΠ²ΠΈΠ½Ρ‚

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while сходСн с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ for, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ счСтчика Π² своСм объявлСнии. Бинтаксис этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

while (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ условия)

{

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

}

Если Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ условия Π² Ρ†ΠΈΠΊΠ»Π΅ while сразу Π»ΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ выполнятся Π½ΠΈ Ρ€Π°Π·Ρƒ.

Π’ листингС 11.15 прСдставлСн ΠΊΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° while.

Листинг 11.15. Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° while

<html>

<head>

<title>Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° while</title>

<script>

var f=1;

var x=prompt ("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число","5");

x=+x;

var i=1;

while(i<=x)

{

f=f*i;

i++;

}

alert(f);

</script>

</head>

<body>

</body>

</html>

Π¦ΠΈΠΊΠ» do..while

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ do..while практичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ while, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условия осущСствляСтся Π² ΠΊΠΎΠ½Ρ†Π΅, ΠΎΠ½ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·:

do

{

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

} while (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ условия)

Π’ листингС 11.16 прСдставлСн ΠΊΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° do..while.

Листинг 11.16. Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° do..while

<html>

<head>

<title>Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° do..while</title>

<script>

var f=1;

var x=prompt ("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число","5");

x=+x;

var i=1;

do

{

f=f*i;

i++;

} while(i<=x)

alert(f);

</script>

</head>

<body>

</body>

</html>

Π¦ΠΈΠΊΠ» for..in

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции for..in ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΡ‡Ρ‚ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Бинтаксис этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

for (свойство in ΠΎΠ±ΡŠΠ΅ΠΊΡ‚)

{

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

}

НапримСр, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ произвСсти ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ всСх элСмСнтов массива (листинг 11.17).

Листинг 11.17. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° for..in

<html>

<head>

<title>ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° for..in </title>

<script>

var a= new Array (5,76,43,12,77,-5, 0);

for (var i in a)

{

a[i]++;

}

alert(a);

</script>

</head>

<body>

</body>

</html>

Π’ Ρ…ΠΎΠ΄Π΅ выполнСния этого ΠΊΠΎΠ΄Π° всС элСмСнты массива a ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Ρ‚ своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ (рис. 11.14).

Рис. 11.14. Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ элСмСнтов массива

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ for..in Π½Π΅ опрСдСляСтся свойство массива length.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ break ΠΈ continue

Иногда Π² Ρ…ΠΎΠ΄Π΅ выполнСния Ρ†ΠΈΠΊΠ»Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ вСсь Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρƒ Π΅Π³ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ. Для этой Ρ†Π΅Π»ΠΈ слуТат ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ break ΠΈ continue. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π·Π° Ρ†ΠΈΠΊΠ»ΠΎΠΌ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ continue ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ шага Ρ†ΠΈΠΊΠ»Π°. Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² продСмонстрировано Π² листингС 11.18.

Листинг 11.18. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°

<html>

<head>

<title>ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°</title>

<script>

var a= new Array (5,0,2,0-3,0);

var b= new Array();

//Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ бСсконСчный Ρ†ΠΈΠΊΠ»

while(true)

{

var x=prompt ("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число","0");

//ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π²Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ строку Π² число

x=+x;

//Если Π²Π²Π΅Π΄Π΅Π½ ноль, Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» прСрываСтся

//Π­Ρ‚ΠΎ СдинствСнный Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· бСсконСчного Ρ†ΠΈΠΊΠ»Π°

if (x==0) {break}

//Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ», ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ всС элСмСнты массива

for (var i=0;i<a.length;i++)

{

//ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта массива a

if (a[i]==0)

{

b[i]="-";

//ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ†ΠΈΠΊΠ»Π° for, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

//дСлСния на ноль

continue;

}

//Находим частноС

b[i]=x/a[i];

}//ΠšΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π° for

alert(a+"\n"x+"\n"+b);

}//ΠšΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π° while

</script>

</head>

<body>

</body>

</html>

Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ частноС ΠΎΡ‚ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ числа ΠΈ элСмСнтов массива a. ΠŸΡ€ΠΈ этом Π² числС элСмСнтов этого массива ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΡƒΠ»ΠΈ, Ρ‚ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² элСмСнт массива с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ b ввСсти ΠΏΡ€ΠΎΡ‡Π΅Ρ€ΠΊ (β€”) (рис. 11.15).

Рис. 11.15. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°

Π’ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Ρ‚Π°ΠΊΠΆΠ΅ дСмонстрируСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ влоТСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Из Ρ†ΠΈΠΊΠ»Π° while Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π²Ρ‹Ρ…ΠΎΠ΄, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ввСсти Π½ΡƒΠ»ΡŒ (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). Π¦ΠΈΠΊΠ» for Π²ΠΎ врСмя исполнСния ΠΈΠ½ΠΎΠ³Π΄Π° прСрываСтся, Ссли элСмСнт массива a Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ дСлСния Π½Π° ноль.

11.5. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ события

Π”ΠΎ сих ΠΏΠΎΡ€ сцСнарии прСдставляли собой простой ΠΊΠΎΠ΄, сразу ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ. Однако часто трСбуСтся исполнСниС ΠΊΠΎΠ΄Π° Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ исполнСниС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ΄Π°. Π’ этом ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ события.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Ѐункция – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ для выполнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Бинтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

function Π˜ΠΌΡΠ€ΡƒΠ½ΠΊΡ†ΠΈΠΈ([Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚1][,..Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚N])

{

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

}

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово function ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π˜ΠΌΡΠ€ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ (Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ) Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ Π² скобках рядом с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, значСния ΠΈ выраТСния.

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π² любом мСстС Π²Π½ΡƒΡ‚Ρ€ΠΈ элСмСнта SCRIPT. МоТно Π΄Π°ΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² этом случаС ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ локальной, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ рСкомСндуСтся ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Π±Π»ΠΎΠΊΠ΅ HEAD Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° выполнСния основного ΠΊΠΎΠ΄Π°, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступной Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π°. Π’ листингС 11.19 прСдставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с функциями.

Листинг 11.19. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

<html>

<head>

<title>ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ</title>

<script>

//Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ массив

var a= new Array (1,2,4,8);

function sum()

{

var s=0; //локальная пСрСмСнная для хранСния суммы

//Π¦ΠΈΠΊΠ» ΠΏΠΎ всСм элСмСнтам массива a

for (var i in a)

{

s=s+a[i];

}

alert("Π‘ΡƒΠΌΠΌΠ° элСмСнтов массива="+s);

}

function product()

{

var p=1; //локальная пСрСмСнная для хранСния произвСдСния

for (var i in a)

{

p=p*a[i];

}

alert("ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ элСмСнтов массива="+p);

}

</script>

</head>

<body>

<script>

var x=prompt("Найти сумму ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ (0 ΠΈΠ»ΠΈ 1)?","0");

if (x=="0")

{

sum();

}

if (x=="1")

{

product();

}

</script>

</body>

</html>

ΠŸΡ€ΠΈ запускС этого ΠΊΠΎΠ΄Π° отобраТаСтся запрос, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти 0 ΠΈΠ»ΠΈ 1. Π’ зависимости ΠΎΡ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° запускаСтся ΠΎΠ΄Π½Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: sum() ΠΈΠ»ΠΈ product(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находят сумму ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ элСмСнтов глобального массива a соотвСтствСнно.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° return. Π’ΠΎΠΎΠ±Ρ‰Π΅ этот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ нСсколько Ρ€Π°Π· Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² выраТСниях (листинг 11.20).

Листинг 11.20. ИспользованиС значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

<html>

<head>

<title>ИспользованиС значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ</title>

<script>

function sum(a,b)

{

return (a+b);

}

</script>

</head>

<body>

<script>

var x1=5, x2=6, x3=3, x4=3;

//ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ (x1+x2)*(x3+x4)

alert (sum(x1,x2)*sum(x3,x4));

</script>

</body>

</html>

Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² этом случаС функция присваиваСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, которая Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ:

var cube=function(x){return x*x*x}

alert(cube(2)+cube(3));

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСмСнная-функция, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π°Ρ ΠΊΡƒΠ± числа.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Иногда Π² процСссС создания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ нСизвСстно, сколько Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΡƒΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ этом случаС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ arguments. ВсС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹. НапримСр, для доступа ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

var arg1=arguments[0];

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ, начиная с нуля. Для опрСдСлСния ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойство length ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° arguments.

Листинг 11.21 дСмонстрируСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ количСства Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Листинг 11.21. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ количСства Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

<html>

<head>

<title>ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ количСства Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ</title>

<script>

function sum(x1,x2) //Ѐункция содСрТит Π½Π΅ мСньшС Π΄Π²ΡƒΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

{

var s=0; //ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ суммы

//Π¦ΠΈΠΊΠ» ΠΏΠΎ всСм Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ

for (var i=0;i<arguments.length;i++)

{

s+=arguments[i];

}

return (s);

}

</script>

</head>

<body>

<script>

//Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

alert (sum(1,2,3,4));

alert (sum(1,-3,40,2,5,7));

</script>

</body>

</html>

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎ функциях

АргумСнтами Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅ простого Ρ‚ΠΈΠΏΠ°, Π½ΠΎ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Однако ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ строки, числа ΠΈΠ»ΠΈ логичСской Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создаСтся копия ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ значСния ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π½Π΅ измСняСтся, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½ΠΈ Π΄Π΅Π»Π°Π»ΠΈ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ эта пСрСмСнная уничтоТаСтся, Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ пСрСмСнная остаСтся ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΉ. Π˜Π½Π°Ρ‡Π΅ происходит ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ этом случаС копия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ создаСтся, Π° пСрСдаСтся ссылка Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Если Π±Ρ‹ происходило ΠΈΠ½Π°Ρ‡Π΅, Ρ‚ΠΎ Ρ‚Π΅Ρ€ΡΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ памяти Π½Π° созданиС Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ². ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, сколько ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π±Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ массива ΠΈΠ· 10 000 элСмСнтов, ΠΊΠΎΠ³Π΄Π° фактичСски ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния – ссылки Π½Π° этот массив. Однако программист Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.