Hi all! NEw to coding, working my way through the Javascript course. A lot to take in on this one so odds are I’ll do it twice. But this is the first time I’ve had to look up a solution and saw something I didn’t recognize.
Here is the solution posted:
function updateRecords(id, prop, value) {
if(value === “”) delete collection[id][prop];
else if(prop === “tracks”) {
collection[id][prop] = collection[id][prop] || ;
collection[id][prop].push(value);
} else {
collection[id][prop] = value;
}
return collection;
}
What I don’t understand specifically is
collection[id][prop] = collection[id][prop] || ;
I know that || is OR when it is in the conditional part of a statement, but in this case it is in the ACTION part of the if/then statement and I have no idea it’s purpose there. What does it do on that side?
So collection[id][prop] = collection[id][prop] || [ ]; just means assign collection[id][prop] to collection[id][prop], but if there is nothing inside collection[id][prop], it’s going to assign it to []. When you are assigning a variable, using || means a default, if the assignment is null or undefined, it will fallback to the default. So here’s an easier example:
let variable = undefined;
let variable2 = variable || "it is undefined";
console.log(variable2)//this will output "it is undefined", because I assigned
//an undefined variable to it, so it fallbacks to the default value.
If the value on the left-hand side of the || evaluates to a truthy value, it will return that value. Otherwise, it will return the value on the right-hand side.
true || 'not getting to me'
// true
false || 'getting to me'
// "getting to me"
false || null
// null
const sayName = (name) => {
return name || 'Please enter your name';
}
console.log(sayName()); // Please enter your name
console.log(sayName('John')); // John