DEV Community

StormyTalent
StormyTalent

Posted on

50+ hints JS(ES6+) developer must know (first part)

Code snips which will help you to be a Senior JS(ES6+) developer.

If you think you are a JS engineer, I recommend you to read this at least one time.

1. REFERENCE

// bad
var a = 1;
var b = 2;
// good
const a = 1;
const b = 2;

// bad
var count = 1;
if (true) {
  count += 1;
}
// good, use the let
let count = 1;
if (true) {
  count += 1;
}
Enter fullscreen mode Exit fullscreen mode

2. Objects

Use the literal syntax for object creation

// bad
const item = new Object();
// good
const item = {};
Enter fullscreen mode Exit fullscreen mode

Use computed property names when creating objects with dynamic property names.

function getKey(k) {
  return `a key named ${k}`;
}

// bad
const obj = {
  id: 5,
  name: 'San Francisco',
};
obj[getKey('enabled')] = true;

// good
const obj = {
  id: 5,
  name: 'San Francisco',

};
Enter fullscreen mode Exit fullscreen mode

Use object method shorthand.

// bad
const atom = {
  value: 1,

  addValue: function (value) {
    return atom.value + value;
  },
};

// good
const atom = {
  value: 1,

  addValue(value) {
    return atom.value + value;
  },
};
Enter fullscreen mode Exit fullscreen mode

Use property value shorthand

const lukeSkywalker = 'Luke Skywalker';

// bad
const obj = {
  lukeSkywalker: lukeSkywalker,
};

// good
const obj = {
  lukeSkywalker,
};

Enter fullscreen mode Exit fullscreen mode

Group your shorthand properties at the beginning of your object declaration.

const anakinSkywalker = 'Anakin Skywalker';
const lukeSkywalker = 'Luke Skywalker';

// bad
const obj = {
  episodeOne: 1,
  twoJediWalkIntoACantina: 2,
  lukeSkywalker,
  episodeThree: 3,
  mayTheFourth: 4,
  anakinSkywalker,
};

// good
const obj = {
  lukeSkywalker,
  anakinSkywalker,
  episodeOne: 1,
  twoJediWalkIntoACantina: 2,
  episodeThree: 3,
  mayTheFourth: 4,
};
Enter fullscreen mode Exit fullscreen mode

Only quote properties that are invalid identifiers.

// bad
const bad = {
  'foo': 3,
  'bar': 4,
  'data-blah': 5,
};

// good
const good = {
  foo: 3,
  bar: 4,
  'data-blah': 5,
};
Enter fullscreen mode Exit fullscreen mode

Do not call Object.prototype methods directly.

// bad
console.log(object.hasOwnProperty(key));

// good
console.log(Object.prototype.hasOwnProperty.call(object, key));

// best
const has = Object.prototype.hasOwnProperty; // cache the lookup once, in module scope.
console.log(has.call(object, key));
/* or */
import has from 'has'; // https://www.npmjs.com/package/has
console.log(has(object, key));
Enter fullscreen mode Exit fullscreen mode

Prefer the object spread syntax over Object.assign to shallow-copy objects. Use the object rest parameter syntax to get a new object with certain properties omitted.

// very bad
const original = { a: 1, b: 2 };
const copy = Object.assign(original, { c: 3 }); // this mutates original ಠ_ಠ
delete copy.a; // so does this

// bad
const original = { a: 1, b: 2 };
const copy = Object.assign({}, original, { c: 3 }); // copy => { a: 1, b: 2, c: 3 }

// good
const original = { a: 1, b: 2 };
const copy = { ...original, c: 3 }; // copy => { a: 1, b: 2, c: 3 }

const { a, ...noA } = copy; // noA => { b: 2, c: 3 }
Enter fullscreen mode Exit fullscreen mode

Thanks for your time.
Next time, I will post about the important usage of Array in ES6+

Top comments (0)