加载这个简单的java脚本代码时出现问题
<script type="text/javascript">
var customer={
name:"Suresh"
speak:function(){
return "my name is" +this.name;
}
address:{
street:"188 sector-5 MVP colony",
city:"Visakhapatnam",
state: "AP"
}
};
document.write(customer.speak()+"<br/>");
document.write(customer.name+"lives at"+ customer.address.street+",<br/>");
</script>
答案 0 :(得分:4)
欢迎使用Stack Overflow。社区通常很乐意帮助解决这样的问题,但实际上学习如何解决这些问题实际上更好。毕竟,每当你遇到一些错误时,你很难发布到SO。
在这种情况下,追踪此问题的最佳方法是什么?它类似于找出你的烤面包机无法正常工作的原因。首先,检查以确保它已插入。然后,尝试使用其他插座。或者,尝试将其他设备插入同一插座以查看其是否有效。等等。这是一个叫做&#34;故障隔离的基本思想&#34;。
您可能认为document.write
存在问题(正如其他人提到的那样,应该避免使用console.log
)。要测试这个,请编写一个单独的小程序,它只能执行单个document.write("Hi, Sasi");
。它有用吗?然后你知道document.write
正在运行,并且你正确使用它。
现在回到有缺陷的程序。首先,只需使用所有可用的工具来帮助您找到任何明显的错误。您应该使用编辑器或IDE,它会为您提供语法突出显示,并可能指示语法错误 - 例如使用红色波浪形下划线。如果您没有使用编辑器或IDE,请删除您正在执行的所有其他操作并找到一个好的,并花时间学习它并进行设置。
另一个有用的工具称为&#34; linter &#34;,它会检查您的JS代码是否存在常见错误和潜在问题。了解linter是什么,以及如何使用它,并选择一个,例如&#34; eslint&#34;。要使用linter,您可能必须将JS放入单独的JS文件中,并使用<script src="path/to/my/test.js">
标记将其放入HTML中。无论如何你应该这样做。现在就做。
接下来,我们在Chrome浏览器中提供了非常有用的开发者控制台。如果您不知道这是什么,或者从未使用过它,那么请再次放弃您正在做的其他事情并详细研究其文档。它有许多方便的功能,但在这种情况下相关的是它将在您的代码中显示语法(和运行时错误)。例如,当我将代码剪切并粘贴到控制台时,它立即给了我错误
Uncaught SyntaxError: Unexpected identifier
马上知道,即使在我需要担心逻辑问题或document.write
问题之前,我的程序中也存在语法错误。此外,它将指出发生错误的确切行:以speak:
开头的行。为什么speak
是&#34;意外的标识符&#34;?如果你现在无法自己解决问题,你可以采用&#34;分而治之的&#34;做法。例如,尝试删除整个speak
方法。但我仍然得到错误,这次是在address
成员。嗯。也许在这里 之上的某些东西导致了以下任何问题。尝试删除上面的name:"Suresh"
行并重试 - 您会看到speak
上的错误消失了。所以你现在知道问题是在这两行之间或之间的某个地方。最后,您应该能够推断出您已经省略了对象文字中key: value
对之间所需的逗号,这有助于您通过阅读this one等文档来了解,这有助于说明
您只需输入一个键列表:值以逗号分隔。
希望上面的内容是一个很好的起点,可以在遇到一个你真正需要发布到SO的更复杂的问题之前,至少跟踪代码中的大多数简单错误。
答案 1 :(得分:1)
首先,您的对象缺少逗号,对象的属性应使用逗号分隔。并且@AndrewLi建议也不要使用document.write()
。下面是工作代码的演示。 Refer表示使用document.write()
var customer={
name:"Suresh",
speak:function(){
return "my name is " + this.name;
},
address:{
street:"188 sector-5 MVP colony",
city:"Visakhapatnam",
state: "AP"
}
};
console.log(customer.speak());
console.log(customer.name+"lives at"+ customer.address.street);
&#13;