Skip to content

Instantly share code, notes, and snippets.

@chadwithuhc
Last active March 27, 2018 16:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chadwithuhc/5bd25c02769c8161d5afa50f405fd87d to your computer and use it in GitHub Desktop.
Save chadwithuhc/5bd25c02769c8161d5afa50f405fd87d to your computer and use it in GitHub Desktop.
JavaScript Refactors
// Refactor to use `querySelector()` instead
document.getElementsByClassName("message")[0].innerHTML = 'Hello World'
// Solution
// `querySelector()` will select the first item it finds
document.querySelector(".message").innerHTML
// ---
// Refactor to use `querySelectorAll()` instead
document.getElementsByTagName("span")
// Solution
// `querySelectorAll()` will select the all matching items it finds
// Using `querySelector()` and `querySelectorAll()` is common practice since jQuery made selection by CSS query popular
document.querySelectorAll("span")
// ---
// Refactor to use `.classList` instead
var messageDiv = document.querySelector('.message');
messageDiv.setAttribute("class", "message end-message");
// Solution
// Using `.classList` we can ensure we are not overridding any prior `class` on the element
var messageDiv = document.querySelector('.message');
messageDiv.classList.add("message", "end-message");
// Refactor the following to use a ternary operator instead
if (message) {
document.getElementsByClassName("message")[0].innerHTML = message
} else {
document.getElementsByClassName("message")[0].innerHTML = "Current Player: " + currentPlayer
}
// Solution
document.getElementsByClassName("message")[0].innerHTML = message ? message : "Current Player: " + currentPlayer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment