我发现这18行Javascript代码据我所知,将状态推送到内存,然后将其替换为另一个现有状态,以便网页的DOM内容会发生变化。该代码用于直接从PHP替换用AJAJ加载的数据(假设setTimeout和setInterval没有帮助改变它)。
var run = (run)=> {
// insert your code here
};
var pS = window.history.pushState;
var rS = window.history.replaceState;
window.history.pushState = (a, b, url)=> {
run(url);
pS.apply(this, arguments);
};
window.history.replaceState = (a, b, url)=> {
run(url);
rS.apply(this, arguments);
};
})();
第16行(unrecoverable syntax error
)中有一个};
。为什么会这样?作为一个JS新手,我没有一点点想法 - 我读了关闭闭包并尝试阅读代码大约4次,但没有认识到闭包有什么问题,我试图寻找语法错误或关键字/名称/语法中的拼写错误,但没有找到任何错误。
我认为代码的逻辑存在问题,而且在我的学习阶段,我认为我缺乏足够的知识来找到问题。
答案 0 :(得分:3)
最后一行的}
和)
未与开场{
和(
配对。
我的结论:
我假设 3号,并为 3号提供解决方案
(function(){
var run = (run)=> {
// insert your code here
};
var pS = window.history.pushState;
var rS = window.history.replaceState;
window.history.pushState = (a, b, url)=> {
run(url);
pS.apply(this, arguments);
};
window.history.replaceState = (a, b, url)=> {
run(url);
rS.apply(this, arguments);
};
})();
正如您在第1行上看到的那样,我添加了(function(){
以匹配右括号和括号