四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

javascript,jquery閉包概念分析

Javascript我是經常要用,所以是要懂這里面的概念。
其實Javascript里的閉包概念很簡單,就是函數用到外部變量,不需要傳參就可以獲取。
舉個例子:
復制代碼 代碼如下:
<script>
var sMessage = "Hello world";
function sayHello(){
alert(sMessage);
}
sayHello();
addNumber(1,2);

var iBaseNum = 10;
function addNumber(iNum1, iNum2) {
function doAddition() {
alert(iNum1 + iNum2 + iBaseNum);
}
return doAddition();
}
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
c();

</script>

第一個函數sayHello沒有傳參數,直接利用了sMessage變量,這個就叫做閉包。
第二個函數復雜點,里面有個doAddition也是閉包函數,他不需要參數,直接在執行環境中獲取iNum1,iNum2,還有外部變量 iBaseNum。
第三個函數 是能保護 i變量的訪問,并且一直保存i在內存中,可以一直增加。(閉包的一個經典用法)
jquery中閉包也差不多,先給個例子

你也許會問
復制代碼 代碼如下:
(function($){
$("div p").click(function(){alert("cssrain!")});
})(jQuery); //一個閉包

這是什么寫法啊?
別急,我也是請教了upc ,才稍微懂了點。
這里面的$只是形參,但jquery是全局變量,所以不需要調用該函數就會自動執行,或者分兩步
就是轉化成正常的函數,先寫函數,后調用。
如下所示
其實:
復制代碼 代碼如下:
(function($){
$("div p").click(。。。);
})(jQuery);

就是等于
復制代碼 代碼如下:
function tempFunction($){ //創建一個以$為形參的函數
$("div p").click(....);
}
TempFunction(jQuery); //傳入實參jQuery執行函數.

干脆直接這么寫 ,算了

復制代碼 代碼如下:
(function(cssrain){
cssrain("div p").click(.... );
})(jQuery); //一個閉包


閉包的基本寫法:
(function(){do someting})();
//這個你就理解為定義一個匿名函數并立即執行
帶參數的話就這樣:
(function(形參){do someting})(實參);
另外
(function(){var upc="i am upc"})();
alert(upc);
會提示undefined。
因為閉包后,里面的變量就相當于局部了。
閉包的好處:
不增加額外的全局變量,
執行過程中所有變量都是在匿名函數內部。
上面的例子不是很好,跟Javascript的閉包有點混淆,但這確實也是jquery中的一種閉包。只不過經過jquery的加工罷了。
如過有什么不對,大家互相討論,我也是初學者,還有很多不懂得地方。

JavaScript技術javascript,jquery閉包概念分析,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 老爸的筒子楼 电视剧| 竹内纱里奈av| 迪卡娅电影| 美少女之恋| 大胆艺术| 默读车| 男操女视频免费| 电脑键盘照片| 电影喜剧明星演员表| 电视剧昨夜星辰| 萱草花二声部合唱谱| 蒙古小男孩唱哭全场| 血型父母和孩子血型表| 电影二十条剧情介绍| 春香传在线观看| 数字记忆法编码100| 必修二英语电子课本外研版| 邓佳佳| 全国城建培训中心| 吴妍儿| (一等奖)班主任经验交流ppt课件| 甜姐儿| 变形金刚1普通话版| cetv3中国教育电视台直播| 鲁班书咒语大全| 男人干女人的视频| 出位江湖| 卡特琳娜·格兰厄姆| 张耀扬个人资料简介| 流行歌简谱| 百家讲坛《两宋风云》| 浪人电影在线观看完整版免费| 沙漠里的鱼| 赖小子在线观看完整视频高清| cctv16节目表今天目表| 夏日福星 电影| 诺亚方舟电影免费完整版在线观看| 重温经典频道在线直播| 勇士之门 电影| 纳恩| 新上海滩张国荣和宁静|