2017-04-07 142 views
0

我想在這裏嘗試一些實驗,請回答,這段代碼有什麼問題?有人能告訴我這個JavaScript有什麼問題嗎?

function run(){ 
for(var i=0;i<arguments.length;i++){ 
    var type=arguments[i].split(" ")[0]; 
    if(type=="(write)"){ 
    var arr=arguments[i].split(" "); 
    var str=[]; 
    for(var i=1;i<arr.length;i++){ 
    str.push(arr[i]); 
    } 
    var fin="\n"+str.join(" "); 
    document.getElementById("console").textContent+=fin; 
    } 
    } 
} 
run(
"(write) I wonder if this works.", 
"(write) I think it DOES!" 
); 

不知何故,它只提出「我不知道這是否有效。」在div但不是「我認爲它是!」。有人能告訴我什麼是錯的,並返回更正的腳本?

+4

您正在使用'i'兩次。像[JSHint](http://jshint.com/)這樣的工具可以告訴你。 – Xufox

+0

哦。謝謝。即時通訊不工作在一個花哨的程序,所以...好吧 – hmpphep

回答

1

JavaScript沒有塊範圍..改變你我的其他變種別的東西

+1

Javascript的塊範圍與let和const,所以它錯了,說Javascript沒有塊範圍 –

+1

謝謝...我忘了xD .. – arvinhubert

0

您正在使用的變量i for循環兩次。 JavaScript具有功能範圍和塊範圍。 所以在第二個「for」中使用不同的變量(可能是j);

for(var j=1;j<arr.length;j++){ 
    str.push(arr[j]); 
    } 
0
function run(){ 


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


    var type=arguments[i].split(" ")[0]; 
    if(type=="(write)"){ 
     var arr=arguments[i].split(" "); 

     var str=[]; 

     //here your i was increamented twice so loop excuted only once 
     for(var j=1;j<arr.length;j++){ 
     str.push(arr[j]); 
    } 


    var fin="\n"+str.join(" "); 
    console.log(fin); 
    document.getElementById("console").textContent+=fin; 
    } 
} 
} 
run(
"(write) I wonder if this works.", 
"(write) I think it DOES!" 
); 
0

變化i在循環中:

for (var i = 1; i < arr.length; i++){ 
    str.push(arr[i]); 
} 

別的東西,或使用讓ES6定義我。

相關問題