Functional programming in JavaScript can be difficult for several reasons: 1) Imperative programming habits from loops and conditionals make functional concepts like pure functions, immutability, and function chaining hard to adopt. 2) Lack of understanding of modern JavaScript features like map, filter, reduce, and concepts like currying, partial application, and tail call optimization. 3) Unfamiliar math terms like functors, applicatives, and monads that describe functional patterns intimidate many developers. 4) Most developers want to just see code examples rather than study underlying functional concepts.