JavaScript conditional assignment

Ruby has a conditional assignment operator: ||=. JavaScript doesn’t have such an operator. Common use cases for conditional assignment that JavaScript developers use are lazily defining a namespace and defaulting function arguments.

Since JavaScript has no built in conditional assignment operator, the language leaves conditional assignment as a stylistic choice for JavaScript developers. The following is the style I like, which I learned from Jeremy Ashkenas.

  • Defining a namespace:

      var Namespace;
      Namespace || (Namepace = {});
  • Function arguments:

      Namespace.Model = {};
      _.extend(Namespace.Model, {
        set: function(attrs, options) {
          options || (options = {});
          if (options.logger) {
            return options.logger.log("Hello. Yes, This is log.")