在javascript中检查未定义

时间:2016-05-23 13:09:37

标签: javascript

我有以下功能:

/**
       * ParkingTime Duration, which is shown by the size of each circle/bubble.
       *
       * @param garage
       * @param res
       * @returns {*}
       */
      function getParkingDuration(garage, res) {
        var parking = res.parking;
        var parking_duration = Array();
        for (var j = 0; j < parking.length; j++) {
          if (typeof parking[j][garage].parkingtime != 'undefined') {
            parking_duration.push(parking[j][garage].parkingtime);
          } else {
            parking_duration.push(0.1);
          }
        }

        return parking_duration;
      }

如果存在未定义的变量,我想将值推送到某个数组。

但是当我检查我的控制台时,我仍然看到一些未定义的停车时间错误。

为什么代码没有达到我的其他声明?

6 个答案:

答案 0 :(得分:1)

我的建议:

  function getParkingDuration(garage, res) {
    var parking = res.parking || []; // in case res is undefined
    var parking_duration = [];
    for (var j = 0; j < parking.length; j++) {
      parking_duration[j]=0.1; // default
      if (parking[j] &&
          parking[j][garage] &&
          parking[j][garage].parkingtime) {               
        parking_duration[j]=parking[j][garage].parkingtime;
      }
    }
    return parking_duration;
  }

答案 1 :(得分:0)

首先:

var parking = res.parking; //if res is undefined you'll get an error

第二

for (var j = 0; j < parking.length; j++) { //if parking is undefined you'll get an error

3) 如果parking[j][garage]未定义:

if (typeof parking[j][garage].parkingtime != 'undefined') { //will give error

或多或少你需要的东西:

function getParkingDuration(garage, res) {
        var parking_duration = Array();
        if(res && res.parking){
          var parking = res.parking;

          for (var j = 0; j < parking.length; j++) {
            if (garage && parking[j][garage] && typeof parking[j][garage].parkingtime != 'undefined') {
              parking_duration.push(parking[j][garage].parkingtime);
            } else {
              parking_duration.push(0.1);
          }
        }
      }

     return parking_duration;
  }

答案 2 :(得分:0)

不确定您的对象结构是什么(我的意思是 - 您是不定义parkingtime还是将其定义为nullempty),您可以尝试

if ( !isNaN(parking[j][garage].parkingtime) ) 
{
}
如果您的parkingtime应该始终是Number,那么这应该有效。

我假设它总是到达if内部声明,因为你说

  

但是当我检查我的控制台时,我仍然看到停车时间的一些错误   未定义。

答案 3 :(得分:0)

你应该使用undefined而没有任何字符串文字。所以就像这些一样 (parking[j][garage].parkingtime == undefined)

答案 4 :(得分:0)

看起来停车[j] [车库]本身是未定义的。 你能试试这个:

 /**
           * ParkingTime Duration, which is shown by the size of each circle/bubble.
           *
           * @param garage
           * @param res
           * @returns {*}
           */
          function getParkingDuration(garage, res) {
            var parking = res.parking;
            var parking_duration = Array();
            for (var j = 0; j < parking.length; j++) {
              if (typeof parking[j] == 'undefined') {
                  parking[j] = {};
              }
              if (typeof parking[j][garage] == 'undefined') {
                 parking[j][garage] = {};
              }
              if (typeof parking[j][garage].parkingtime != 'undefined') {
                parking_duration.push(parking[j][garage].parkingtime);
              } else {
                parking_duration.push(0.1);
              }
            }

            return parking_duration;
          }

答案 5 :(得分:0)

以下是您可以使用console.log快速查看以查看代码内容的一些内容

  1. 检查res.parking是否已定义
  2. 检查parking[j]是否已定义
  3. 检查parking[j][garage]是否已定义
  4. 检查parking[j][garage]是否具有“parkingtime”属性
  5. 它可以帮助您了解定义的内容和不定义的内容,并帮助您更好地解决问题。