博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript自执行函数
阅读量:6670 次
发布时间:2019-06-25

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

定义

立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,

这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行;
立即执行函数(immediate function)术语不是在ECMAScript标准中定义的,但它很短有助于描述和讨论模式;
这种模式有一些几部分组成:

  • 使用函数表达式定义一个函数(函数声明不能起作用)

  • 在结尾加上一对括号,让函数立即被执行

  • 将整个函数包裹在一对括号中(只有在你不将函数赋值给一个变量的时候才需要)

功能

  • 它可以帮你封装大量的工作而不会在背后遗留任何全局变量。

  • 你定义的所有变量都会成员立即执行函数的局部变量,所以你不用担心这些临时变量会污染全局空间

  • 可以使用这种技术可以模仿一个私有作用域,用匿名函数作为一个“容器”,“容器”内部可以访问外部的变量,而外部环境不能访问“容器”内部的变量

  • 可以添加更多的加强模块,移除它们,单独测试它们,允许用户去禁用它们等等

注意点

立即执行函数通常作为一个单独模块使用。一般没有问题,但是,建议在自己写的立即执行函数前加分号,这样可以有效地与前面代码进行隔离。否则,可能出现意想不到的错误。

写法

  1. 最前最后加括号

    (function(){alert(1);}());

    JSLINT推荐这种写法

  2. function外面加括号

    (function(){alert(1);})();

    目前很多比较好的js library 使用的都是第二种方式。

    比如: web 图形绘制的: git , draw2d ,....

  3. function前面加运算符,常见的是!与void

    !function(){alert(1);}(); void function(){alert(2);}();

    在function前面加!、+、 -甚至是逗号等到都可以起到函数定义后立即执行的效果,而()、!、+、-、=等运算符,都将函数声明转换成函数表达式,消除了javascript引擎识别函数表达式和函数声明的歧义

转载地址:http://solxo.baihongyu.com/

你可能感兴趣的文章