书签脚本中的javascript:!function(){}();是什么语法?
编辑
1
2023-07-15
在书签脚本中看到javascript:!function(){}();
这样的写法,整理了一下其中涉及的知识点。
知识点1:匿名函数
常规的函数定义写法:
function aaa(){
doSomeThing();
}
f = aaa;
bbb(aaa);
//匿名函数写法
f = function(){doSomeThing();};
bbb(function(){doSomeThing();});
匿名函数写法:
function(){
doSomeThing();
}
f = function(){doSomeThing();};
bbb(function(){doSomeThing();});
对于书签脚本这种需要尽量缩短代码长度,且函数代码不会被多处复用的情况,匿名函数就很合适。
当然还有更短的箭头函数:
() => {doSomeThing();}
知识点2:立即执行函数
在函数声明function(){}
后面加()
,意思是执行这个函数声明。
“立即执行函数”也称“自动执行函数”。
aaa();
f = aaa;
f();
(function aaa(){})();
(function(){})();
立即执行函数要求前面那一部分必须是一个表达式,所以下面这种写法会报错:
function(){}();
所以最直观的方法就是用括号把函数声明的部分括起来:
(function(){})();
知识点3:凑成表达式的多种方法
最直观的是用括号,但是用一元运算符也行,比如书签脚本中的感叹号:
(function(){})();
!function(){}();
~function(){}();
参考
- 0
- 0
-
分享