PL-JS-001

Braces Are Mandatory

Preferred javascript
if (!user) {
    return;
}
Not Pureline javascript
if (!user) return;
PL-JS-002

Use Semicolons

Preferred javascript
const session = createSession(user);
session.start();

Pureline JavaScript uses semicolons consistently.

PL-JS-003

const First

Preferred javascript
const user = loadUser();

Use let only for actual reassignment:

javascript
let count = 0;
count++;

Do not use var.

PL-JS-004

Prefer async / await

Preferred javascript
async function loadUser(id) {
    const response = await fetch(`/users/${id}`);

    if (!response.ok) {
        return null;
    }

    return response.json();
}

Avoid promise chains when async / await produces clearer control flow.

PL-JS-005

Arrow Functions Are Contextual

Normal named logic may use regular functions javascript
function createSession(user) {
    return new Session(user);
}
Arrow functions are well suited for local callbacks javascript
users.filter(user => user.active());

Do not use arrow functions everywhere by default.

PL-JS-006

Destructuring Must Improve Clarity

Good javascript
const { id, name } = user;

Avoid destructuring large objects only because the language allows it.