这是某种javascript数组初始化,为什么?

时间:2013-05-24 14:27:01

标签: javascript node.js mongodb

我正在处理一个保存到mongodb数据库存储的javascript(node.js)示例。

我遇到了一段代码,我无法理解教程的作者究竟在做什么以及为什么要这样做。这只是我缺乏理解,但我真的很想知道这里发生了什么。请参阅下面的代码,并在相关行旁边找到我的评论:

  //save new employee
  EmployeeProvider.prototype.save = function(employees, callback) {
      this.getCollection(function(error, employee_collection) {
        if( error ) callback(error)
        else {

          // This is the portion I have a question on. 
          // So this is checking to see if the array.length is undefined? Why would the length property be undefined?
          if( typeof(employees.length)=="undefined")
            // What is going on here exactly? 
            // It looks like he is initializing and array with employees parameter that was passed in to the save 
            // function earlier? I've never seen this kind of thing done before. Thoughts?
            employees = [employees];

          for( var i =0;i< employees.length;i++ ) {
            employee = employees[i];
            employee.created_at = new Date();
          }

          employee_collection.insert(employees, function() {
            callback(null, employees);
          });
        }
      });
  };

感谢您的帮助!

克里斯

2 个答案:

答案 0 :(得分:3)

看起来意图允许employees参数是单个员工或一组员工。如果传递一个雇员对象,它将变为一个元素数组。

答案 1 :(得分:3)

if语句及其内容(它下面的第一行)基本上说:“如果employees不是数组,则创建一个具有该名称的新数组,其中包含传入的内容”。这保证了,从那时起,employees将是一个数组。