成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你了解JavaScript中的function嗎?

開發(fā) 前端
Function作為Javascript的核心技術(shù)之一,清晰的理解function的機(jī)制和用法,對(duì)我們進(jìn)行javascript開發(fā)非常重要.今天本人就結(jié)合自己的實(shí)踐為大家介紹一些function在javascript中的一些淺顯用法.

Function作為Javascript的核心技術(shù)之一,清晰的理解function的機(jī)制和用法,對(duì)我們進(jìn)行javascript開發(fā)非常重要.今天本人就結(jié)合自己的實(shí)踐為大家介紹一些function在javascript中的一些淺顯用法.

1. Function是什么

從Javascript對(duì)function的定義, function是一個(gè)由代碼集合而成的對(duì)象.

從中我們可看出,我們可以使用向C語(yǔ)言中的函數(shù)那樣使用function,也可以對(duì)function進(jìn)行面向?qū)ο缶幊?當(dāng)然Javascript中function的強(qiáng)

大還不止如此.

2. 如何使用function

2.1定義

  1. function myfunc(param) {  
  2.     //code  

注意Javascript中的這兩個(gè)function被認(rèn)為是同一個(gè):

在運(yùn)行時(shí)到底調(diào)用哪一個(gè)function取決于加載順序,后一個(gè)加載的function會(huì)覆蓋前一個(gè).

  1. function func1() {return 'func1'; }  
  2. function func1(name) { return name; } 

換句話說就是,function的參數(shù)都是可選參數(shù),因此funciton的識(shí)別是不包括如參的,而函數(shù)入?yún)⑻幍穆暶魇菫榱艘梅奖阋约翱勺x性.

以上的代碼也等價(jià)于:

  1. function func1() {  
  2.     return arguments[0] || 'func1';  
  3. }  
  4. func();              //return 'func1'  
  5. func('function'); //return 'function' 

2.2 function當(dāng)作對(duì)象

是的沒錯(cuò),在javascript中function就是對(duì)象,我們可以向使用一個(gè)對(duì)象那樣使用function.

它可以有自己的屬性和方法.有如下的一個(gè)funciton:

  1. function nameOf(name) {  
  2.     return name.toUpperCase();   

2.2.1 function作為對(duì)象進(jìn)行賦值

  1. var person = person || {};  
  2. person.nameOf = nameOf;  
  3. person.nameOf('yang dong'// return "YANG DONG" 

2.2.2 定義function的屬性

看看以下的代碼, 你能從中的到什么信息:

  1. function nameOf() {return nameOf.blogger;}  
  2. nameOf.blogger = "YANG_DONG"

沒錯(cuò),function可以擁有自己的屬性.

考慮這樣一種場(chǎng)景, 假如我們要統(tǒng)計(jì)某個(gè)function被調(diào)用的次數(shù).那么我們有兩種方式來實(shí)現(xiàn):

1.設(shè)定一個(gè)全局變量來記錄,該funciton被調(diào)用的次數(shù),每調(diào)用一次,該變量加1:

  1. var globalNameOfCounter = 0;  
  2. nameOf();  
  3. globalNameOfCounter ++; 

這樣做看起來是沒有問題的,在代碼還是比較簡(jiǎn)單的時(shí)候,它可以工作的很好,但是隨著代碼越來越復(fù)雜,維護(hù)這段邏輯的成本會(huì)直線上升.

主要是因?yàn)?globalNameOfCounter污染的global命名空間,并且破壞了代碼的封裝性.

2.使用function的屬性

看看以下代碼:

  1. function nameOf() {  
  2.     nameOf.counter++;  
  3.     return nameOf.blogger;  
  4. }  
  5. nameOf.blogger = “YANG_DONG"  
  6. nameOf.counter = 0;    
  7. nameOf(); //nameOf.counter = 1  
  8. nameOf(); //nameOf.counter = 2 

顯而易見,第二種方式有著很好的封裝性和維護(hù)性.function的屬性的應(yīng)用還不止如此.請(qǐng)看下文.

2.3 function作為名字空間

Javascript不支持名字空間(本人不太理解如此強(qiáng)大的語(yǔ)言為什么不支持名字空間呢,這是為什么呢?),

不過我們依然可以使用其強(qiáng)大的funciton為我們支持名字空間.

從上節(jié)我們知道function可以定義自己的屬性,我們就可以利用該特性來生成名字空間.請(qǐng)看以下代碼:

  1. nameOf.getBloggerName = function() {  
  2.     return nameOf.blogger;  

此時(shí)在nameOf名字空間之下已經(jīng)包含了:blogger,counter屬性和function getBloggerName.

2.4 function作為method

在javascript中function和method其實(shí)是沒有什么本質(zhì)區(qū)別的,如果非的區(qū)分兩者的話,我想也就是this變量不同吧.

  1. function g() {return this;}  
  2. var local = local || {};  
  3. local.method = g; //修改this指向local  
  4. local.method();   //返回local對(duì)象  
  5. g();              //返回DOMWindow對(duì)象 

2.5 function皆為closure

在Javascript中所有的function都綁定了一個(gè)scope chain,因此它是一個(gè)保存了調(diào)用上下文的函數(shù).看看下面的實(shí)例代碼:

  1. var variable = 'global';  
  2. function getVariable(){  
  3.     var variable = 'local',  
  4.     func = function() {  
  5.         return variable;  
  6.     };  
  7.     return func;  
  8. }  
  9. getVariable()();  //return local; 

當(dāng)func被調(diào)用的時(shí)候,它所取的varible的值是調(diào)用上下文中的變量而并非與之同名的全局變量.

3. 總結(jié)

如果用一句話概括今天對(duì)funciton的介紹,那么我想應(yīng)該是: function是可以被調(diào)用執(zhí)行的代碼集對(duì)象.

以上是function的一些應(yīng)用場(chǎng)景,當(dāng)然它還不止這些.

比如: function作為構(gòu)造函數(shù)(也就是funciton作為類),繼承等.

原文:http://www.cnblogs.com/yangdong/archive/2012/02/05/function-in-javascript-0.html

【編輯推薦】

  1. JavaScript面向?qū)ο缶幊?/a>
  2. JavaScript中的陷阱大集合
  3. 深入理解JavaScript之強(qiáng)大的原型和原型鏈
  4. 使用JavaScript和Canvas寫一個(gè)游戲框架
  5. 20個(gè)將JavaScript推到***的網(wǎng)站
責(zé)任編輯:陳貽新 來源: 楊棟的博客
相關(guān)推薦

2019-11-06 09:52:01

JavaScript單線程非阻塞

2017-10-26 08:53:38

前端JavaScript函數(shù)式編程

2022-08-25 14:42:45

JavaScrip字符串

2023-11-09 08:22:38

2021-11-26 08:07:16

MySQL SQL 語(yǔ)句數(shù)據(jù)庫(kù)

2021-07-27 06:49:11

C#存儲(chǔ)檢索

2022-09-22 14:55:31

前端JavaScripthis

2022-09-26 13:10:17

JavaScriptthis

2023-05-05 08:41:16

SQL字符函數(shù)

2024-04-15 00:02:00

Java補(bǔ)丁技術(shù)

2019-10-31 08:36:59

線程內(nèi)存操作系統(tǒng)

2021-01-07 05:40:13

BLE模塊Android

2024-01-18 09:07:04

Errors函數(shù)Golang

2018-12-21 11:24:55

Java時(shí)間處理編程語(yǔ)言

2025-05-27 00:00:00

JavaScript開發(fā)AI

2020-10-21 09:28:25

JS變量的內(nèi)存分配

2012-09-27 10:24:22

監(jiān)控機(jī)房

2012-09-06 17:54:28

2014-04-17 16:42:03

DevOps

2022-07-26 00:00:22

HTAP系統(tǒng)數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲一区二区三区免费视频 | 狠狠综合久久av一区二区小说 | 国产999精品久久久影片官网 | 欧洲一区二区在线 | 国产福利在线播放 | 波多野吉衣在线播放 | 亚洲欧洲精品一区 | 一区二区三区精品视频 | 欧美激情精品久久久久久 | 九九热精品在线 | 99久久久无码国产精品 | 亚洲精品免费看 | 9色视频在线| 91精品国产91久久久久久密臀 | 免费成人在线网站 | 色性av| 中文字幕不卡在线观看 | 色综合一区二区 | 日本午夜免费福利视频 | 午夜国产精品视频 | 91久久久久久久久久久久久 | 91精品国产高清一区二区三区 | 影音av | 国产小视频自拍 | 国产伦精品一区二区三区照片91 | 日韩在线观看 | 一级aaaaaa毛片免费同男同女 | 国产有码| 亚洲国产激情 | 日韩www| 成人国产精品久久久 | 国产日韩免费视频 | 日本精品一区二区 | 国产亚洲一区二区三区 | 天天曰天天曰 | avhd101在线成人播放 | 午夜激情小视频 | 亚洲精品在线观 | 国产午夜精品久久久 | 成人在线一区二区三区 | 免费一区 |