Why last test not pass Please Help me

Tell us what’s happening:

Your code so far


function LinkedList() {
var length = 0;
var head = null;

var Node = function(element){
  this.element = element;
  this.next = null;
};

this.size = function(){
  return length;
};

this.head = function(){
  return head;
};

this.add = function(element){
  var node = new Node(element);
  if(head === null){
      head = node;
  } else {
      let currentNode = head;

      while(currentNode.next){
          currentNode  = currentNode.next;
      }

      currentNode.next = node;
  }

  length++;
};

this.remove = function(element){
  // Only change code below this line
    let currentNode = head;
   var previousNode;
 if(currentNode.element===element ){
  
   head = currentNode.next}

  else{
     while(currentNode.element !==element ){
       previousNode = currentNode ;
       currentNode = currentNode.next;
     }
     previousNode.next = currentNode.next;
   }
   length--;
   
 }

  // Only change code above this line
};


Your browser information:

User Agent is: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36.

Challenge: Remove Elements from a Linked List

Link to the challenge:
https://www.freecodecamp.org/learn/coding-interview-prep/data-structures/remove-elements-from-a-linked-list

Let’s say you add 3 elements to your linked list and try to use your remove method to remove an element which does not exist (like below):

  var test = new LinkedList();
  test.add('cat');
  test.add('dog');
  test.add('kitten');
  test.remove('elephant');

Your while loop will iterate and at some point currentNode becomes null because of the last line in the while loop:

currentNode = currentNode.next

It becomes null, because the last item’s next property is null, then when the while loop condition tries to evaulate currentNode.element !== element, since currentNode is null, you create a TypeError because null does not have an element property.