博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript立即调用的函数表达式N种写法(第二篇)
阅读量:7060 次
发布时间:2019-06-28

本文共 1040 字,大约阅读时间需要 3 分钟。

  上一篇博客我谈到将函数声明转换为函数表达式最常见的一种写法是:通过括号()将匿名函数声明转换为函数表达式即(function(){})();

言外之意就是还有其他方式,记住:任何消除函数声明和函数表达式间歧义的方法,都可以被解析器正确识别!它们可以分为5类,超过10多种:

(function(){})(); //最常见的写法 下文没特殊指明就是指它(function(){});   //容易与上面的混淆[function()()];//一元运算符~function(){};+function(){};-function(){};!function(){};  //常见于一些第3方代码//关键字delete function() {}();typeof function() {}();void function() {}();new function() {}();new function() {};var f = function() {}();1, function() {}();1 ^ function() {}();1 > function() {}();1 && function(){}(); //...

  当然,它们之间也有性能的差异:new永远是最慢的,+-在chrome速度惊人,常见的()和!在各浏览器中的表现也算上乘,另外+-比()少一个字符。

  解惑:我们可能经常看到一些插件前面会加一个;分号,我的理解如下:

glue() //插件(function(){//.....前面应该加;分号})();
//Uncaught TypeError: undefined is not a function

glue()函数和插件单独执行是没有错误的,但是当glue()与插件通过某种方式合并在一起了就会报错。所以我们可以这样去写:

;(function(){//省略一段代码})();--------------------------;!function(){//省略一段代码}();---------------------------;+function(){//省略一段代码}();----------------------------//等等

  以上学会可当装逼之用(~><~),同时再也不会为看不懂别人的代码而烦恼了!

 

转载于:https://www.cnblogs.com/wang-jiang/p/4096330.html

你可能感兴趣的文章
unittest单元测试框架实现参数化
查看>>
Web版OutLook,利用POP接收邮件服务器邮件
查看>>
经典算法 KMP算法详解
查看>>
sharepoint 2010 安装、卸载和升级沙盒解决方案
查看>>
prog1,2,3
查看>>
手机硬件结构
查看>>
NSIntger CGFloat NSNumber
查看>>
objc’s category and class cluster 详解
查看>>
黄聪:C#中HtmlAgilityPack判断是否包含或不包含指定的属性或值
查看>>
mysql innodb cluster 无感知集群
查看>>
bzoj 2818: Gcd GCD(a,b) = 素数
查看>>
Django实例(3)-用户连数据库登入系统
查看>>
Tomcat的下载,安装,配置,案例,详解(不断补充中)
查看>>
sql server 2000系统表sysproperties在SQL 2008中无效的问题
查看>>
CMD一键获取cpu信息
查看>>
SQLServer备份脚本
查看>>
自定义函数实现位操作
查看>>
二叉树的下一个结点
查看>>
baidu map JSAPI
查看>>
需求评审
查看>>