/ 学习笔记 / 9浏览

书签脚本中的javascript:!function(){}();是什么语法?

文章目录
  • 知识点1:匿名函数
  • 知识点2:立即执行函数
  • 知识点3:凑成表达式的多种方法
  • 参考
  • 在书签脚本中看到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(){}();

    参考

    1. JS中[感叹号]function(){}()的理解_js里面括号后面的感叹号_zhangge3663的博客-CSDN博客
    2. js 前加感叹号是什么意思?比如 !function(){}(); 答案在这里_js字符串前面加感叹号_SleepingBug的博客-CSDN博客
    Linux系统用户最小化检测方法
    企业采购模式扫盲
    安卓APP渗透基础 —— APK安装包的签名机制
    安卓APP渗透基础 —— 四大组件暴露测试
    安卓APP渗透基础 —— APK文件结构
    《CCNA认证指南》“IP地址”知识点整理

    0

    1. This post has no comment yet

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注