码迷,mamicode.com
首页 > 其他好文 > 详细

立即执行函数

时间:2018-08-15 20:30:18      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:功能   comm   分割   ons   匿名   遇到   string   代码   忽略   

1.知识点

1.1 函数声明:function fnName() {...} ;(函数声明提升,以 fnName() 形式调用)

使用 function 关键字声明一个函数,再给一个函数名,叫函数声明;

1.2 函数表达式: var fnName = function() { ... } ; (后加括号立即调用并返回值给变量)

使用 function 关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式;

1.3 匿名函数: function() { ... } ;

无名函数表达式

1.4 函数表达式加运算符立即执行 

1.5原理: 

1.5.1 js在"预编译"阶段, 会解释函数声明, 但却会忽略表达式. 

1.5.2 当js执行到function() {//code}();时, 由于function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错;  (不正确写法: function(){}()  )

1.5.3 当js执行到(function {// code})();时, 由于(function {// code})是表达式, js会去对它求解得到返回值, 由于返回值是一 个函数, 故而遇到();时, 便会被执行.

 

2.用法

2.1 最普通写法

(function() { ... })()     (function(a) { ... })(12)  (最常用:第一个括号用于分割形成小块代码段,第二个括号为常见的函数执行小括号)

(function(){ ... }())    (function(a) { ... }(12) )

!function(a) { console.log(a); }(12345); 

2.2 常见写法

2.2.1 结合jq封装插件(代码在jq之后)

(function ($) {

        $.fn.test111 = function () {
            alert(‘test‘)
        }
})(jQuery);

$("#elementid").test111();
2.2.2 命名空间
var nameSpace = nameSpace || {};
(function () { nameSpace.ns = function () { } }; })();

3.意义:创建局部作用域、命名空间、闭包、功能封装

 

立即执行函数

标签:功能   comm   分割   ons   匿名   遇到   string   代码   忽略   

原文地址:https://www.cnblogs.com/justSmile2/p/9483486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!