[ES6] Function Params
1. Default Value of function param:
The function displayTopicsPreview()
raises an error on the very first line when called with no arguments. Let's fix that!
function displayTopicsPreview( topics ){ var message = "There are currently " + topics.length; _displayPreviewMessage(topics, message); } ----------------- function displayTopicsPreview( topics = [] ){ let message = "There are currently " + topics.length; _displayPreviewMessage(topics, message); }
2. Complete the setPageThread()
function signature with the missing named parameters. You can check out the body of the function to help discover what options are expected.
function setPageThread(name, ){ let nameElement = _buildNameElement(name); let settings = _parseSettings(popular, expires, activeClass); _updateThreadElement(nameElement, settings); } ------------------- function setPageThread(name, {popular, expires, activeClass}){ let nameElement = _buildNameElement(name); let settings = _parseSettings(popular, expires, activeClass); _updateThreadElement(nameElement, settings); }
3. Let's refactor the loadProfiles()
function to use named parameters with default values.
function loadProfiles(userNames = [], options = {}) { let profilesClass = options.profilesClass || ".user-profile"; let reverseSort = options.reverseSort || false; if (reverseSort) { userNames = _reverse(userNames); } _loadProfilesToSideBar(userNames, profilesClass); } ------------------------------ function loadProfiles(userNames = [], {profilesClass, reverseSort} = {}) { profilesClass = profilesClass || ".user-profile"; reverseSort = reverseSort || false; if (reverseSort) { userNames = _reverse(userNames); } _loadProfilesToSideBar(userNames, profilesClass); }
function setPageThread(name, {popular, expires, activeClass} = {}){ // ... } setPageThread("ES2015", { popular: true }); //won't cause error
Important to take away from here is
- Instead of giving options = {} in the function param, we give {profileClass, reserseSort} = {}
- First it is more clear to see what "options" it is
- Second we assign default param here.