这里就要注意了,有个坑给我们埋下了,如果直接略过,觉得就一个时间戳没啥好看的,那你就大错特错了!注意这是一个 try-catch 语句,其中有一句 `div = document["createElement"];`,有一个 HTML DOM Document 对象,创建了 div 标签,这段代码如果放到浏览器执行,没有任何问题,直接走 try 语句,返回时间戳,如果在我们本地 node 执行,就会捕获到 `document is not defined`,然后走 catch 语句,返回的是那一串数字加字母,最后的结果肯定是不正确的!
解决方法也很简单,在本地代码里,要么去掉 try-catch 语句,直接 return 时间戳,要么在开头定义一下 document,再或者直接注释掉创建 div 标签的这行代码,但是K哥在这里推荐直接定义一下 document,因为谁能保证在其他地方也有类似的坑呢?万一隐藏得很深,没发现,岂不是白费力气了?
经过以上操作以后,再次本地运行,会提示 `window.signs is not a function`,出错的地方是一个 eval 语句,我们去浏览器看一下这个 eval 语句,发现明明是 `window.sign()`,为什么本地就变成了 `window.signs()`,平白无故多了个 s 呢?