2017-04-07 144 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定义我。

相关问题