有人看到这个有什么不对吗
Can anyone see anything wrong with this?
本文关键字:什么 更新时间:2023-09-26
我是web编程的新手,所以这里的问题很可能非常明显,但。。。
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>
-
在外部
for
循环的末尾(就在return perms;
之前)缺少一个}
-
toStriing
不是函数;)
当缺少右括号或大括号时,几乎总是会出现"输入意外结束"错误。解析程序将继续尝试读取超过文件末尾的内容,因为作用域尚未关闭。
您的代码就是这样:
function permute()
不包含右大括号。
解决方案:在</script>
之前添加单个}
一个好的文本编辑器应该突出显示匹配的括号和大括号
当您在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>
您的代码应该如下所示:
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;
}
}
}
问题是置换函数缺少右括号。使用像VS2013这样的好编辑器进行语法校对是避免此类错误的简单方法。
toString拼写错误。另外,在置换函数的末尾缺少一个大括号。在编写代码之前,请始终先关闭大括号,以确保块正确关闭:)
函数permute(list){…}的右大括号丢失,并且缺少toStriing而不是toString
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 全局变量和全局对象的属性之间有什么区别吗
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在ember/handlers中使用value和valueBinding有什么区别
- 什么'在webpack外部设置中,reactDom和reactDom不同
- 在JavaScript中拆分日期字符串的更好方法是什么
- 为什么$.brower被弃用?还有什么更好的替代方案
- 什么是&&在没有if的行中的变量之间
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- DOM元素和angular元素之间的主要区别是什么
- javascript导入的最佳实践是什么
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 基于窗口宽度jquery的函数的替代方法是什么
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效