为什么NaN内部功能?

时间:2014-03-13 00:42:13

标签: javascript jquery

这是我的代码:

        var Paint = (function(cells) {

        var step = $('.workplace').width()/cells;
        var plants = [];

        var cell = function(cells) {
            for (var i=1; i < cells; i++) {
            $('.workplace').append("<div class='line-vertical' style='left: " + step * i + "px;' >")
            $('.workplace').append("<div class='line-horizontal' style='top: " + step *i + "px;'>");
            }
    return {
      cell:cell
    }
        };)()

Paint.cell(10);

在此代码步骤= NaN中,为什么以及如何修复它?

2 个答案:

答案 0 :(得分:1)

以下是您的代码的一个简短示例,它突出了问题...

var Paint = (function(cells) {
    alert(cells);
})();

如果您定义了单元格参数......

var Paint = (function(cells) {
    alert(cells);
})(5);

虽然我怀疑你想在cell函数中做到这一点,所以将宽度计算移到那里。

答案 1 :(得分:0)

您正在定义一个带有单个参数(function(cells))的函数,但是您可以立即执行它而不需要任何参数;如果我们采用代码的第一行和最后一行,就可以得到:

var Paint = (function(cells) {
     // code referencing cells here
};)()

这不会将Paint分配给该函数,而是分配给执行该函数的结果,就像您写的那样:

function something(cells) {
     // code referencing cells here
};
var Paint = something()

由于您正在执行没有参数的函数,cells将是未定义的,因此出错的行:

var step = $('.workplace').width()/cells;

将数字除以未定义的变量。