2013-12-16 76 views
1

我是新來的網絡編程,因此很可能是這裏的問題是顯而易見的尷尬,但是...任何人都可以看到這個有什麼不對嗎?

鉻合金DevTools是給我這個代碼的兩個錯誤。意外的輸入結束和未定義的函數錯誤。這些對我來說聽起來像是由於語法錯誤導致的,但是如果它存在的話我找不到它。任何人都可以看到語法錯誤?還是有什麼我做錯了?

<!DOCTYPE html> 
<html> 
<body> 

<p1 id='txt'></p1> 
<button onclick='main();'>Run</button> 

<script> 
function main(){ 
    alert('running script'); 
    document.getElementById('txt').innerHTML=permute([1,2,3]).toString(); 
} 

function permute(list){ 
    alert('Running permute on '+list.toStriing()); 
    if(list.length == 1){return [list];} 
    if(list.length > 1){ 
     var perms = []; 
     for(var i=0; i<list.length; i++){ 
      var first = list[i]; 
      var others = list.slice(0,i).concat(list.slice(i+1,list.length)); 
      var subPerms = permute(others); 
      for(var x=0; x<subPerms; x++){ 
       perms.push([list].concat(subPerms[x])); 
      } 
     return perms; 
    } 
} 
</script> 

</body> 
</html> 
+0

(x = 0; x

回答

2
  1. 你缺少一個}在外for環路(return perms;前右)結束

  2. toStriing不是一個函數;)

1

「意外輸入結束「錯誤幾乎總是在您錯過了右括號或大括號時發生。解析器將繼續嘗試讀取文件的結尾,因爲範圍尚未關閉。

這是你的代碼的情況:

function permute()不包括右括號。

解決方案: 添加一個}</script>

一個好的文本編輯器應突出括號匹配和括號

0

當你在Javascript這條消息,你應該檢查你的控制檯,它應該有一個可以展開的箭頭的錯誤消息。然後,點擊堆棧跟蹤,並在發生錯誤 你錯過了一個外托架

for(var i=0; i<list.length; i++){ 
     var first = list[i]; 
     var others = list.slice(0,i).concat(list.slice(i+1,list.length)); 
     var subPerms = permute(others); 
     for(var x=0; x<subPerms; x++) 
      perms.push([list].concat(subPerms[x])); 
     } 
     return perms; 

}//you were missing a bracket here 

而且,你有一個list.toStriing()它應該給你的行號。我猜這只是一個錯字

您的固定代碼

<!DOCTYPE html> 
<html> 
<body> 

<p1 id='txt'></p1> 
<button onclick='main();'>Run</button> 

<script> 
function main(){ 
    alert('running script'); 
    document.getElementById('txt').innerHTML=permute([1,2,3]).toString(); 
} 

function permute(list){ 
    alert('Running permute on '+list.toString()); 
    if(list.length == 1){return [list];} 
    if(list.length > 1){ 
     var perms = []; 
     for(var i=0; i<list.length; i++){ 
      var first = list[i]; 
      var others = list.slice(0,i).concat(list.slice(i+1,list.length)); 
      var subPerms = permute(others); 
      for(var x=0; x<subPerms; x++){ 
       perms.push([list].concat(subPerms[x])); 
      } 
     } 
     return perms; 
    } 
} 
</script> 

</body> 
</html> 
0

您的代碼應該是這樣的:

function main(){ 
    alert('running script'); 
    document.getElementById('txt').innerHTML=permute([1,2,3]).toString(); 
} 

function permute(list) { 
    alert('Running permute on ' + list.toStriing()); 
    if (list.length == 1) { return [list]; } 
    if (list.length > 1) { 
     var perms = []; 
     for (var i = 0; i < list.length; i++) { 
      var first = list[i]; 
      var others = list.slice(0, i).concat(list.slice(i + 1, list.length)); 
      var subPerms = permute(others); 
      for (var x = 0; x < subPerms; x++) { 
       perms.push([list].concat(subPerms[x])); 
      } 
      return perms; 
     } 
    } 
} 

的問題是對於該置換功能缺少一個右括號。使用像VS 2013這樣的好編輯器進行語法驗證是避免這種錯誤的簡單方法。

0

toString拼寫錯誤。另外,在排列函數結束時會丟失大括號。嘗試總是右括號首先編寫代碼,以確保正確封閉塊:)

0

右大括號的功能置換(名單){......}前爲(VAR失蹤toStriing代替的toString

相關問題