Parsing key:value declarations
Consider tightening up the long if statement using || which should be equivalent to your current logic.  I can't test this for you, but see if this works:

var test = function($f, $c, declarations) {
  var split = declarations.split(":"), key, value, cIsFProp;

  if (split.length &lt; 2)
    throw new Error("Declaration is in an invalid format");

  cIsFProp = $f[$c] !== undefined &amp;&amp; $f[$c][split[1]];

  value = cIsFProp ? $f[$c][split[1]] : null;
  value = value || $c[split[1]]) || $f[split[1]]) || "" + split[1];
  key = split[0];
  return {[key]: value};
};