Javascript 陷阱

被一个JavaScript的问题折腾了好半天。原来是遇到了一个陷阱。

这个错误是这样的。

function foo()
{ foo = ‘Hello world’; }

当这个函数调用第二次的时候,就会报错 Error: foo is not a function.

JavaScript很强大,在JavaScript里,所有的一切都是Object,所有的一切都可以按照Object来操作。问题就处在这,函数也是一个Object,而且,完全不带保护,你可以对其进行操作。因此,函数foo的里面,对foo的赋值就把foo这个函数给覆盖了,后面,foo就是一个字符串了。

总之,这个算不上BUG,可以说是设计中的一种陷阱。以后还是要小心,这种语言太过灵活也容易出问题。尤其是在没有编译器和良好的调试环境的情况下,更容易出问题。

2 thoughts on “Javascript 陷阱”

Leave a Reply

Your email address will not be published. Required fields are marked *