Refactor Global Variables Out of Functions(Problem)

The callback function in newestBookList is confusing,can anyone explain,and the task is also failing

// the global variable
var bookList = ["The Hound of the Baskervilles", "On The Electrodynamics of Moving Bodies", "Philosophiæ Naturalis Principia Mathematica", "Disquisitiones Arithmeticae"];
var bookListrefer = [...bookList] 
/* This function should add a book to the list and return the list */
// New parameters should come before the bookName one

// Add your code below this line
function add (booklist,bookName) {
  let bookArr = booklist.push(bookName)
  return bookArr;
  
  // Add your code above this line
}

/* This function should remove a book from the list and return the list */
// New parameters should come before the bookName one

// Add your code below this line
function remove (bookName) {
  if (bookListrefer.indexOf(bookName) >= 0) {
    let bookArr2 =  bookListrefer.splice(0, 1, bookName)
    return bookArr2;
    
    // Add your code above this line
    }
}

var newBookList = add(bookListrefer, 'A Brief History of Time');
var newerBookList = remove(bookListrefer, 'On The Electrodynamics of Moving Bodies');
var newestBookList = remove(add(bookListrefer, 'A Brief History of Time'), 'On The Electrodynamics of Moving Bodies');

console.log(bookList) //original array
console.log(bookListrefer) // copy of the original array
console.log(newBookList) // add function
console.log(newerBookList) // remove function
console.log(bookListrefer) //check for changes in the referencing array
console.log(newestBookList)

this is not a calback, but first the add() function is called and returns a value, that value is then used as first argument of the remove() function