--- title: break slug: Web/JavaScript/Reference/Statements/break translation_of: Web/JavaScript/Reference/Statements/break ---
Lo statement break interrompe il loop corrente, termina uno statement {{jsxref("Statements/switch", "switch")}}, o trasferisce l'esecuzione verso un {{jsxref("Statements/label", "label")}} .
break [label];
label
{{optional_inline}}Lo statement break
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.
Uno statement break
, 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 break
il programma verrà terminato insieme al loop o allo switch.
La seguente funzione contiene uno statement break
che interromperà il {{jsxref("Statements/while", "while")}} loop quando la variabile i
avrà valore 3, quindi restituirà il valore di 3 * x
.
function testBreak(x) { var i = 0; while (i < 6) { if (i == 3) { break; } i += 1; } return i * x; }
Il seguente codice usa lo statement break
con un blocco definito da una {{jsxref("Statements/label", "label")}}. Lo stetement break
deve essere innestato all'interno di qualsiasi label a cui fa riferimento. Nota che inner_block
è innestato dentro outer_block
.
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 }
Il codice seguente usa lo statement break
nei labeled block, ma genera un SyntaxError
poichè il break
è all'interno del block_1
ma fa riferimento a block_2
. Uno statement break
deve sempre essere innestato all'interno dei blocchi a cui si riferiscono i {{jsxref("Statements/label", "label")}}.
block_1: { console.log('1'); break block_2; // SyntaxError: label not found } block_2: { console.log('2'); }
Verranno generati SyntaxError
anche nei seguenti esempi di codice dove viene usato lo stetement break
all'interno di funzioni che sono innestate nei cicli loop, oppure all'interno di funzioni innestate in labeled block, per cui lo stetemen break
si intende come stop all'esecuzione e uscita.
function testBreak(x) { var i = 0; while (i < 6) { if (i == 3) { (function() { break; })(); } i += 1; } return i * x; } testBreak(1); // SyntaxError: Illegal break statement
block_1: { console.log('1'); ( function() { break block_1; // SyntaxError: Undefined label 'block_1' })(); }
Specifiche |
---|
{{SpecName('ESDraft', '#sec-break-statement', 'Break statement')}} |
{{Compat("javascript.statements.break")}}