JavaScript Clean DFS Solution
javascript\nvar exist = function(board, word) {\n    const ROW_NUM = board.length, COL_NUM = board[0].length;\n    \n    function callDFS(r, c, idx) {\n        
```javascript\nvar exist = function(board, word) {\n    const ROW_NUM = board.length, COL_NUM = board[0].length;\n    \n    function callDFS(r, c, idx) {\n        if(word.length === idx) return true;\n        if(r >= ROW_NUM || r < 0 || board[r][c] !== word[idx]) return false; \n        \n        board[r][c] = \'#\'; // mark as visited\n        \n        if (callDFS(r+1, c, idx+1)||\n            callDFS(r-1, c, idx+1)||\n            callDFS(r, c+1, idx+1)||\n            callDFS(r, c-1, idx+1)) return true;\n            \n        board[r][c] = word[idx]; // reset the board\n    }\n    \n    for(let r = 0; r < ROW_NUM; r++) {\n        for(let c = 0; c < COL_NUM; c++) {\n            if(board[r][c] === word[0] && callDFS(r, c, 0)) return true;\n        }\n    }\n    return false;    \n};\n```
['Depth-First Search', 'JavaScript']