匿名函数相关

作者: guwenmei | 来源:发表于2017-01-20 16:17 被阅读0次

自执行函数的三种写法

第一种:

(function(){
    //...
 }();
//常见写法,JQuery所采用
第二种:
(function(){
    //...
 ()};
第三种:
!function(){
    //...
 ();
//// 但在前面加上一个布尔运算符(只多了一个感叹号),就是表达式了,将执行后面的代码,也就合法实现调用。在前面加上~+-等一元操作符也可以。。其实还有好几种符合都可以保证匿名函数声明完就立即执行
第三种为什么那么写?

我们都知道函数声明有两种方式:

function fnA(){
  alert('msg');
}
//声明式定义函数
var fnB = function(){
  alert('msg');
}
//函数赋值表达式定义函数

前面的自执行函数都是匿名函数。通常,我们调用一个方法的方式就是 FunctionName()。但是,如果我们尝试为一个“定义函数”末尾加上(),解析器是无法理解的。

function msg(){
  alert('message');
}();
//解析器是无法理解的

如果将函数体部分用()包裹起来就可以运行并且解析器是不报错的,如:

(function($) {         
 //...  
})(jQuery);```
那为什么将函数体部分用()包裹起来就可以了呢?
原来,使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。也就是说,任何能将函数变成一个函数表达式的作法,都可以使解析器正确的调用定义函数。而 ! 就是其中一个,而 + - || 都有这样的功能。
另外,用 ! 可能更多的是一个习惯问题,不同的运算符,性能是不同的。

[更多参考链接](http://swordair.com/function-and-exclamation-mark/)http://swordair.com/function-and-exclamation-mark/

相关文章

  • 匿名函数相关

    自执行函数的三种写法 第一种: 第二种: 第三种: 第三种为什么那么写? 我们都知道函数声明有两种方式: 前面的自...

  • day11高级函数和变量的作用域

    1. 匿名函数 1.1 什么是匿名函数 没有函数名的函数就是匿名函数 (匿名函数还是函数!!!!!!) 1.2 ...

  • Python语言基础8。函数

    引用、递归函数、匿名函数、列表推导式、文件的读写、with open()as file文件的相关操作shutil模...

  • Day10-匿名函数&变量的作用域&函数递归&迭代器&生成器

    匿名函数 1.匿名函数 匿名函数就是没有函数名的函数; 匿名函数可以看成是类型是function的值和10, 'a...

  • Day10 函数

    一.匿名函数 1.匿名函数 匿名函数就是没有函数名的函数; 匿名函数可以看成是类型是function的值和10, ...

  • kotlin基础学习-2(匿名函数相关)

    匿名函数 定义时不取名字的函数,我们称之为匿名函数,匿名函数通常整体传递给其他函数,或者从其他函数返回。 匿名函数...

  • 总结Day10_函数提升

    ****函数**** ===匿名函数=== 1.什么是匿名函数   匿名函数还是函数,只是声明的格式和普通函数不一...

  • PHP全栈学习笔记32

    php自定义函数之匿名函数所谓匿名,就是没有名字。匿名函数,也就是没有函数名的函数。 变量函数式的匿名函数 内部函...

  • PHP全栈学习笔记32

    php自定义函数之匿名函数所谓匿名,就是没有名字。匿名函数,也就是没有函数名的函数。 变量函数式的匿名函数 内部函...

  • Kotlin - 函数解析

    匿名函数 定义时不取名字的函数,我们称之为匿名函数,匿名函数通常整体传递给其他函数,或者从其他函数返回。匿名函数对...

网友评论

    本文标题:匿名函数相关

    本文链接:https://www.haomeiwen.com/subject/kyawbttx.html