斌斌 (给我写信) 原创博文(http://blog.csdn.net/binbinxyz),转载请注明出处!
用js写东西的时候遇到了一个神奇的现象:直接调用某函数A(方便讨论)可以正常运行,在另外的函数B里面调用该函数A一直出错。我声明一点:该函数B与A是无关的。先贴上代码,如下:
代码一:
<!DOCTYPE html> <html> <body> <script type="text/javascript"> function Circle(r) { this.r = r; } Circle.prototype.area = function() { return 3.14 * this.r * this.r; } var a = new Circle(1.0); //此处运行正常 alert("a:" + a.area()); function init() { // Some Code ... } var Circle = { PI: 3.14159 }; init(); </script> </body> </html>
代码二:
<!DOCTYPE html> <html> <body> <script type="text/javascript"> function Circle(r) { this.r = r; } Circle.prototype.area = function() { return 3.14 * this.r * this.r; } var a = new Circle(1.0); //此处运行正常 alert("a:" + a.area()); function init() { // Some Code ... var b = new Circle(1.0); //此处运行错误 alert("b:" + b.area()); } var Circle = { PI: 3.14159 }; init(); </script> </body> </html>
检查再检查,调试再调试,结果还是没有找出问题原因。
最后,在我几乎失望透顶的时候,我随意地点开了DOM树的结构。结果眼前一亮――我发现了如下代码:
var Circle = { PI: 3.14159 };原来是自己之前写的代码忘记删除了。所以,当代码一运行的时候结果正常,而代码二运行的时候会出现错误。
谨记:在javascript中可以重复定义一个函数,但它们存活的时间不同。