I've been coding in JavaScript where functions are treated as first-class citizens, they also play the role of implementing the key OOP concepts (encapsulation/inheritance/polymorphism), but does that make JavaScript a functional language?
Those who have coded in other functional languages like haskell say that JS isn't a "true" functional language. I'd like to know what are these features that make a language truly functional?