0

I was implementing queue in JS, but the console keeps siplaying Uncaught SyntaxError: Unexpected token var. I used some online debugger and it points error in line 21. This is the code:

var queue = function (){

var elements = [];
var cur_element = 0;
var del_elem = 0;
return {
    size: function() {
        return cur_element-del_elem;
    },
    empty: function() {
        return cur_element == 0;
    },
    front: function() {
        if(!this.empty()){
            return elements[0];
        }
        return false;
    },
    back: function() {
        if(!this.empty()){
            return elements[cur_element];
        }
        return false;
    },
    push: function(var elem){
        cur_element++;
        elements[cur_element]=elem;
    },
    pop: function() {
        var outcome = elements[del_elem];
        delete elements[del_elem];
        del_elem++;
        return outcome;
    }
    };
};
Box Box Box Box
  • 5,094
  • 10
  • 49
  • 67
Kweldulf
  • 76
  • 1
  • 10
  • 1
    `push: function(var elem){` <-- remove var from there, you don't need to tell javascript that a parameter is a `var`, differently from other languages function parameters don't need to be identified. – briosheje May 05 '16 at 11:05

2 Answers2

0
push: function(var elem){

remove var

fdfey
  • 587
  • 2
  • 11
0

remove var from:

push: function(var elem){

In fact, in javascript you don't need (and you mustn't) to provide the type of a function parameter because it is a statically typed language (see Set type for function parameters?)

Also, to compare with 0, please use === instead of ==, check this for reference:

http://dorey.github.io/JavaScript-Equality-Table/?utm_content=buffer4f1b9

So, replace:

return cur_element == 0;

with:

return cur_element === 0;

(PLEASE NOTE: REPLACING == WITH === WAS NOT MANDATORY BUT HIGHLY RECOMMENDED!)

Correct code below:

var queue = function (){

var elements = [];
var cur_element = 0;
var del_elem = 0;
return {
    size: function() {
        return cur_element-del_elem;
    },
    empty: function() {
        return cur_element === 0;
    },
    front: function() {
        if(!this.empty()){
            return elements[0];
        }
        return false;
    },
    back: function() {
        if(!this.empty()){
            return elements[cur_element];
        }
        return false;
    },
    push: function(elem){
        cur_element++;
        elements[cur_element]=elem;
    },
    pop: function() {
        var outcome = elements[del_elem];
        delete elements[del_elem];
        del_elem++;
        return outcome;
    }
    };
};

http://jsbin.com/tirevipoba/edit?html,js,output

Community
  • 1
  • 1
briosheje
  • 7,356
  • 2
  • 32
  • 54