我是网络编程的新手,所以很可能这里的问题非常明显,但......
Chromes 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 :(得分:2)
在}
圈外(for
之前)
return perms;
toStriing
不是函数;)
答案 1 :(得分:1)
您的代码就是这种情况:
function permute()
不包括右大括号。
<强>解决方案:强>
在}
</script>
一个好的文本编辑器应该突出显示匹配的括号和大括号
答案 2 :(得分: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>
答案 3 :(得分: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这样的优秀编辑器进行语法校对是一种避免这种错误的简单方法。
答案 4 :(得分:0)
toString拼写错误。此外,在您的置换功能结束时缺少大括号。尝试在编写代码之前始终先关闭大括号,以确保正确关闭的块:)
答案 5 :(得分:0)
关闭函数permute(list){......}的大括号,并且缺少toStriing而不是toString