代码执行抛出错误“对象不是函数”

时间:2015-01-13 18:04:07

标签: javascript javascript-objects

当我执行以下代码时,我得到以下错误。 未捕获的TypeError:对象不是函数

    <html>
    <script>
    var obj_1 = {x:1, y:2}
    (function (o)
    {
        for(i in o)
        {
        console.log(i);
        }
    })(obj_1);

    </script>
    </html>

请解释导致此错误的原因? 感谢。

1 个答案:

答案 0 :(得分:5)

您在申报后遗漏了一个分号。它认为您正试图致电{x:1, y:2}()。半冒号是可选的,通常可以工作,除非你有一些不明确的东西。

这就是为什么你应该总是使用分号;

您应该始终做的另一件事是不像在for循环中那样创建全局变量

// This works
var obj_1 = {x:1, y:2};
(function (o)
{
    for(var i in o)
    {
    console.log(i);
    }
})(obj_1);

当你没有使用;完成一行时,JavaScript会首先尝试将下一行合并到语句中,如果它不能,那么它就好像有一个{ {1}}。

;