2016-07-22 90 views
0

我試圖阻止我的for循環,當它等於某個輸入時,我能夠在函數外實現這一點。例如,假設我將輸入變量設置爲'not leak',我希望循環在數組命中'not'時停止,並將其添加到設置爲'leak'以輸出'not leak'的關鍵字變量。但是,當我嘗試將循環插入函數時,它停止了按預期方式工作,並會給出每個結果,直到輸入變量等於文本變量(我不希望它這樣做)。例如,它會輸出'不泄漏','不泄漏',這就是停止的地方,當我只是想要它輸出'不泄漏'把循環放在一個函數內

我已經嘗試了各種格式的功能,如設置函數作爲變量,給出函數參數,並將變量放在函數內部和外部,零進度。看起來,如果語句插入到函數中,它不會按預期工作。任何想法爲什麼以及如何解決這個問題?

下面是它在一個函數中的外觀。

function negKeyword() { 
 
\t 
 
var keyword = 'leak'; 
 
var input = 'not leak'; 
 
var text = ''; 
 
var arr = ['no', 'not', 'checked', '']; 
 
\t 
 
for (i = 0; i < arr.length; i++) { 
 
\t 
 
\t if (text == input) { break; } \t 
 
\t text = arr[i] + ' ' + keyword; 
 
\t console.log(text); 
 
\t 
 
\t } 
 
\t 
 
} 
 

 
negKeyword();

下面是它的外觀功能

var keyword = 'leak'; 
 

 
var input = 'no leak'; 
 

 
var text = ""; 
 

 
var arr = ['no', 'not', 'checked', '']; 
 

 
for (i = 0; i < arr.length; i++) { 
 
\t 
 
\t if (text===input) {break;} 
 
\t text = arr[i] + ' ' + keyword; 
 
\t 
 
} 
 

 
console.log(text);

+2

它做同樣的事情裏面任何函數之外。你只是在不同的地方有'console.log'。也許你應該正確地縮進你的代碼,以便你能看到它。 – 4castle

回答

0

您正在使用的console.log內循環之外。下面的功能匹配內部和外部。

function negKeyword() { 
 
\t 
 
var keyword = 'leak'; 
 
var input = 'not leak'; 
 
var text = ''; 
 
var arr = ['no', 'not', 'checked', '']; 
 
\t 
 
for (i = 0; i < arr.length; i++) { 
 
\t 
 
\t if (text == input) { break; } \t 
 
\t text = arr[i] + ' ' + keyword; 
 
\t 
 
\t 
 
\t } 
 
     console.log(text);//Place this here (outside the for loop) 
 
\t 
 
} 
 

 
negKeyword();

+0

不應縮進括號和'console.log'。我覺得這是悲傷的真正原因。 – 4castle

+0

我認爲這將是簡單的事情,謝謝! –

0

你的console.log是內循環。

function negKeyword() { 
 
\t 
 
var keyword = 'leak'; 
 
var input = 'not leak'; 
 
var text = ''; 
 
var arr = ['no', 'not', 'checked', '']; 
 
\t 
 
for (i = 0; i < arr.length; i++) { 
 
\t 
 
\t if (text == input) { break; } \t 
 
\t text = arr[i] + ' ' + keyword; 
 
\t } 
 
\t return text; 
 
} 
 

 
console.log(negKeyword());