iife 与 document.title 的简单语句行为

iife vs simple statement behavior with document.title

我正在寻找一种使用 javascript 小书签来更改当前页面选项卡标题的方法。

我最初尝试了一个简单的语句,但它实际上将我导航到一个仅包含标题的新页面。然后我找到了相同的代码,但被包裹成一个 iife。

基本上我试图理解这之间的区别:

javascript: document.title="title";

还有这个:

javascript: (function(){document.title="title";})();

谁能解释一下为什么第一个语句从页面导航而第二个 iife 语句实际上更改了标题?

这基本上就是小书签所做的 - 如果 javascript: 后面的表达式解析为 undefined 以外的内容(例如字符串),则当前页面将被替换。因此,运行 任意 Javascript 的一个选择是 运行 一个没有 return 任何东西的 IIFE。更多解释 here.

行为可能因浏览器而异。

另一种选择是使用逗号运算符:

javascript: (document.title = 'www.google.com', undefined)

对于任何不是非常琐碎的代码,您可以考虑使用用户脚本(例如 Tampermonkey)而不是小书签,它可能更易于管理。