Obfuscation is computationally cheap (one-time). Deobfuscation is computationally hard (requires analysis, emulation, or symbolic execution).
At its core, obfuscation transforms readable, logical code into a functionally equivalent but illegible mess. It is (which requires a key) and not minification (which merely removes whitespace and renames variables for performance). javascript deobfuscator and unpacker