React.memo performs a shallow comparison, so nested objects are not compared by their contents. It compares the references of object props using Object.is() . Example jsx const Child = React.memo(({ user }) => { console.log("Child rendered"); return <p>{user.profile.name}</p>; }); Suppose the parent passes this object: jsx const user = { name: "John", profile: { name: "John Doe" } }; Case 1: New outer object, same nested values js const prevUser = { name: "John" , profile: { name: "John Doe" } }; const nextUser = { name: "John" , profile: { name: "John Doe" } }; React compares the user prop references: js Object. is (prevUser, nextUser); // false Result: The component re-renders because the outer object reference changed. React doesn't need to compare the nested properties. Case 2: Same outer object, ...
Common pattern without else Many developers prefer an early return instead of else : function login ( user ) { if ( ! user ) { console . log( "No user found" ); return ; } console . log( "Welcome" ); } Here no else is needed because return exits the function. Rule: If there is no else , JavaScript simply ignores the if block when the condition is false and continues executing the next line. why return return is used to immediately stop a function and optionally send a value back . Example without return : function greet () { console . log( "Hello" ); console . log( "Welcome" ); } greet (); Output: Hello Welcome Both lines run. Example with return : function greet () { console . log( "Hello" ); return ; console . log( "Welcome" ); } greet (); Output: Hello After return , the function ends immediately. Anything below it is not executed. That's why de...