aboutsummaryrefslogtreecommitdiff
path: root/files/it/web/javascript/reference/statements/break/index.html
blob: 8799911ff94633bce027591aa1ccfbf33bf3a003 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
---
title: break
slug: Web/JavaScript/Reference/Statements/break
translation_of: Web/JavaScript/Reference/Statements/break
---
<div>{{jsSidebar("Statements")}}</div>

<p>Lo <strong>statement break </strong>interrompe il loop corrente, termina uno statement {{jsxref("Statements/switch", "switch")}}, o trasferisce l'esecuzione verso un {{jsxref("Statements/label", "label")}} .</p>

<div>{{EmbedInteractiveExample("pages/js/statement-break.html")}}</div>



<h2 id="Sinstassi">Sinstassi</h2>

<pre class="syntaxbox notranslate"><code>break [<em>label</em>];</code></pre>

<dl>
 <dt><code>label</code> {{optional_inline}}</dt>
 <dd>Identificatore che può essere anche associato ad una {{jsxref("Statements/label", "label")}}. Se lo statement non è un loop o uno {{jsxref("Statements/switch", "switch")}}, il label è necessario.</dd>
</dl>

<h2 id="Descrizione">Descrizione</h2>

<p>Lo statement <code>break</code> può contenere un parametro opzionale ({{jsxref("Statements/label", "label")}}) che impone al programma di interrompere l'esecuzione e saltare ad un determinato punto nel programma, indicato dalla label stessa. La label può anche essere uno degli statement jsxref("Statements/block", "block")}}; e non dovrà essere preceduto da uno statement loop.<br>
 Uno statement <code>break</code>, con o senza label opzionale, non può essere usato nel corpo di una funzione innestata in un loop o uno switch, poichè quando verrà eseguito <code>break</code> il programma verrà terminato insieme al loop o allo switch.</p>

<h2 id="Esempi">Esempi</h2>

<h3 id="break_in_un_while_loop">break in un while loop</h3>

<p>La seguente funzione contiene uno statement  <code>break</code> che interromperà il {{jsxref("Statements/while", "while")}} loop quando la variabile <code>i</code> avrà valore 3, quindi restituirà il valore di 3 * <code>x</code>.</p>

<pre class="brush:js;highlight:[6]; notranslate">function testBreak(x) {
  var i = 0;

  while (i &lt; 6) {
    if (i == 3) {
      break;
    }
    i += 1;
  }

  return i * x;
}</pre>

<h3 id="break_in_labeled_blocks">break in labeled blocks</h3>

<p>Il seguente codice usa lo statement <code>break</code> con un blocco definito da una {{jsxref("Statements/label", "label")}}. Lo stetement <code>break</code> deve essere innestato all'interno di qualsiasi label a cui fa riferimento. Nota che <code>inner_block</code> è innestato dentro <code>outer_block</code>.</p>

<pre class="brush:js;highlight:[1,2,4]; notranslate">outer_block: {
  inner_block: {
    console.log('1');
    break outer_block; // esce sia da inner_block che da outer_block
    console.log(':-('); // non viene eseguito
  }
  console.log('2'); // non viene eseguito
}
</pre>

<h3 id="break_in_labeled_blocks_che_genera_un_errore">break in labeled blocks che genera un errore</h3>

<p>Il codice seguente usa lo statement <code>break</code> nei labeled block, ma genera un <code>SyntaxError</code> poichè il <code>break</code> è all'interno del <code>block_1</code> ma fa riferimento a <code>block_2</code>. Uno statement <code>break</code> deve sempre essere innestato all'interno dei blocchi a cui si riferiscono i {{jsxref("Statements/label", "label")}}.</p>

<pre class="brush:js;highlight:[1,3,6]; notranslate">block_1: {
  console.log('1');
  break block_2; // SyntaxError: label not found
}

block_2: {
  console.log('2');
}
</pre>

<h3 id="break_allinterno_di_funzioni">break all'interno di funzioni</h3>

<p>Verranno generati <code>SyntaxError</code> anche nei seguenti esempi di codice dove viene usato lo stetement <code>break</code> all'interno di funzioni che sono innestate nei cicli loop, oppure all'interno di funzioni innestate in labeled block, per cui lo stetemen <code>break</code> si intende come stop all'esecuzione e uscita.</p>

<pre class="brush:js;highlight:[1,3,6]; notranslate">function testBreak(x) {
  var i = 0;

  while (i &lt; 6) {
    if (i == 3) {
      (function() {
        break;
      })();
    }
    i += 1;
  }

return i * x;
}

testBreak(1); // SyntaxError: Illegal break statement
</pre>

<pre class="brush:js;highlight:[1,3,6]; notranslate">block_1: {
  console.log('1');
  ( function() {
    break block_1; // SyntaxError: Undefined label 'block_1'
  })();
}
</pre>

<h2 id="Specifiche">Specifiche</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Specifiche</th>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-break-statement', 'Break statement')}}</td>
  </tr>
 </tbody>
</table>

<h2 id="Compatibilità_dei_Browser">Compatibilità dei Browser</h2>



<p>{{Compat("javascript.statements.break")}}</p>

<h2 id="Vedi_anche">Vedi anche</h2>

<ul>
 <li>{{jsxref("Statements/continue", "continue")}}</li>
 <li>{{jsxref("Statements/label", "label")}}</li>
 <li>{{jsxref("Statements/switch", "switch")}}</li>
</ul>