使用+ =运算符获取NaN

时间:2014-11-19 19:10:44

标签: javascript jquery

我正试图在页面上获得两个div与同一个类的组合高度。当我第一种方式执行时,我得到了NaN作为结果,但是检查控制台时,只添加了两个结果,两者都是类型编号。

(这导致NaN)

$scope.getPageHeader = function () {
  var headerSize;
  var myArr = [];
  var pageHeaders = jQuery(".page-header");

  jQuery(pageHeaders).each(function () {
    headerSize += jQuery(this).height();
    // myArr.push(jQuery(this).height());
    // headerSize =  myArr[0] + myArr[1];

  })
  return headerSize;
}

如果我尝试以漫长的方式做到这一点,将两个项目推到一个阵列上并添加它们,它就可以了。这是为什么?

(这导致返回正确的数字)

$scope.getPageHeader = function () {
  var headerSize;
  var myArr = [];
  var pageHeaders = jQuery(".page-header");

  jQuery(pageHeaders).each(function () {
    //headerSize += jQuery(this).height();
    myArr.push(jQuery(this).height());
    headerSize =  myArr[0] + myArr[1];

  })
  return headerSize;
}

3 个答案:

答案 0 :(得分:9)

headerSize初始化为0,因为isNaN(undefined + 0)

答案 1 :(得分:1)

在第一个示例中,headerSize值未定义以启动,因此当您添加它时,您将获得NaN。

声明时将其初始化为零,你应该好好去。

答案 2 :(得分:0)

代码应该是

$scope.getPageHeader = function () {
  var headerSize = 0;
  var myArr = [];
  var pageHeaders = jQuery(".page-header");

  jQuery(pageHeaders).each(function () {
    headerSize += jQuery(this).height();
  })
  return headerSize;
}