欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中Function詳解

 更新時間:2015年02月27日 09:41:13   投稿:hebedich  
函數是由關鍵字function、函數名加一組參數及置于大括號中需要執(zhí)行的一段語義定義的。今天我們就來詳細講解一下JavaScript中的Function。

關鍵字function用來定義函數。

復制代碼 代碼如下:

//函數聲明式定義:
function funcname([arg1[,args[...,argn]]]){
 statements
}
//函數表達式定義:
var funcname = function ([arg1[,args[...,argn]]]){
 statements
};

注意,function語句里的花括號是必需的,即使函數體只包含一條語句。

在JavaScript中,函數是Function類的具體實例。而且都與其它引用類型一樣具有屬性和方法。

函數名實際上是指向函數對象的指針,函數可以作為參數參與到傳參和返回值中。

函數的對象特性

因為函數是Function的實例,而函數名僅僅是該實例的一個引用地址。因此可以作為參數和返回值參與到函數的傳參過程中。

復制代碼 代碼如下:

function call_some_function(some_function, some_argument) {
    return some_function(some_argument);
}
function add_10(num) {
    return num + 10;
}
console.log(call_some_function(add_10,20)); //30

函數的內部屬性

arguments | this
•arguments對象中保存著傳遞給函數的參數
•arguments.length返回傳入參數的個數
•Note: length屬性表示函數定義時候默認接收的參數數量。arguments.length表示函數實際執(zhí)行時接收的參數數量。

復制代碼 代碼如下:

function test_arguments() {
    if (arguments.length == 2) {
        console.log(arguments.length);
        console.log(arguments);
    } else {
        console.log(arguments.length);
        console.log(arguments);
        arguments.callee(4, 5);
    };
}(1, 2, 3)
/**
 3
{ '0': 1, '1': 2, '2': 3 }
2
{ '0': 4, '1': 5 }
 **/

•arguments.callee()主要用在遞歸函數中調用函數自身的情境中。js和別的語言不同在于函數名只是一個指針,可以隨時變化,函數中利用函數名來調用自身屬于高耦合,可能會出現問題,而arguments.callee()調用自身就會規(guī)避掉這個問題

復制代碼 代碼如下:

function factorial(num) {
    if (num <= 1) {
        return 1;
    } else {
        return num * factorial(num - 1);
    };
}
function callee_f(num) {
    if (num <= 1) {
        return 1;
    } else {
        return num * arguments.callee(num - 1);
    };
}
factorial(10); //運行正常
f = factorial;
factorial = null;
f(10); //error
callee_f(10); //運行正常
f = callee_f;
callee_f = null;
f(10); //運行正常

•this主要用來幫助函數引用函數所處作用域中的對象。

復制代碼 代碼如下:

var color = 'red';
function syaColor() {
    console.log(this.color);
}
syaColor(); //red
var o = new Object();
o.color = 'blue';
o.sayColor = sayColor;
o.sayColor(); //blue

call()和apply()

call()和apply()是每個函數都包含的自有方法。之前已經提到了函數是定義的對象,那么調用函數時候,函數中的this是對當前與下變量的調用。而如果想改變函數執(zhí)行所在域空間,則可以使用call()和apply()來實現。

復制代碼 代碼如下:

color = 'red';
var o = {color: 'blue'};
function sayColor() {
    console.log(this.color);
}
sayColor(); //red
sayColor.call(this); //red
sayColor.call(o); //blue

app()和call()的作用是相同的,區(qū)別主要在于傳入參數的不同。

call(this,para1,prar2,prar3) 第一個參數是函數要執(zhí)行的作用域,后面的參數是函數的輸入參數,有多少個依次寫多少個。

apply(this,[para1,para2,prara3])第一個參數也是函數要執(zhí)行的作用域,后面是一個Array的數組對象。

使用call()/apply()來擴充作用域最大的好處是對象和方法的解耦。

內置對象

Global對象可以理解成最外層的對象,所有的對象,以及不屬于其它對象的屬性和方法都被包含在Global對象中。
* isNaN(x) 用來檢查參數x是否為數字。如果為數字返回false,否則返回true
* isFinite(x) 用來檢查參數x是否為無窮大/小,如果是無窮大/小,則返回true
* parseInt(x) 用來解析字符串并返回整數
* parseFloat(x) 用來解析字符串并返回浮點數
* encodeURI()和encodeURIComponent()會對字符串進行特殊的UTF-8編碼,規(guī)避一些特殊字符來讓瀏覽器能夠讀懂。他倆的區(qū)別主要在于encodeURI()不會對本身屬于URI的特殊字符進行編碼,而encodeURIComponent()會對其發(fā)現的所有非標準字符進行編碼。

復制代碼 代碼如下:

var uri = "http://www.wrox.com/illegal value.htm#start";
//http://www.wrox.com/illegal%20value.htm#start
console.log(encodeURI(uri))
//http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start
console.log(encodeURIComponent(uri))

•對應的解碼函數為decodeURI()和decodeURIComponent()
•eval(script) 用來將script的內容在解釋器中執(zhí)行并返回對應的結果。非常強大!

Note:在瀏覽器中,windows對象封裝了Global對象,并承擔了很多額外的任務和功能。

Math對象為另一個內置對象。為JavaScript提供了數學計算功能。

以上就是本文的全部內容了,希望小伙伴們能夠喜歡,能夠對大家有所幫助。

相關文章

  • 微信小程序textarea層級過高(蓋住其他元素)問題的解決辦法

    微信小程序textarea層級過高(蓋住其他元素)問題的解決辦法

    這篇文章主要給大家介紹了關于微信小程序textarea層級過高(蓋住其他元素)問題的解決辦法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03
  • JavaScript實現放大鏡效果代碼示例

    JavaScript實現放大鏡效果代碼示例

    這篇文章主要介紹了JavaScript實現放大鏡效果代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • js取float型小數點后兩位數的方法

    js取float型小數點后兩位數的方法

    js中取小數點后兩位方法最常用的就是四舍五入函數了,前面我介紹過js中四舍五入一此常用函數,這里正好用上,下面我們一起來看取float型小數點后兩位一些方法總結
    2014-01-01
  • JSON.parse損壞大數字的原因解析及解決方案

    JSON.parse損壞大數字的原因解析及解決方案

    從10多年前JSON在線編輯器的早期開始,用戶經常反映編輯器有時會破壞他們JSON文檔中的大數字的問題,這篇文章主要介紹了為什么JSON.parse會損壞大數字,如何解決這個問題,需要的朋友可以參考下
    2022-10-10
  • 詳解JS ES6變量的解構賦值

    詳解JS ES6變量的解構賦值

    這篇文章主要介紹了JS ES6變量的解構賦值,對ES6感興趣的同學,可以參考下
    2021-05-05
  • iframe調用父頁面函數示例詳解

    iframe調用父頁面函數示例詳解

    這篇文章主要介紹了iframe如何調用父頁面函數,下面有個不錯的示例,大家可以參考下
    2014-07-07
  • JS實現留言板功能

    JS實現留言板功能

    這篇文章主要為大家詳細介紹了JS實現留言板功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • javascript和jquery實現設置和移除文本框默認值效果代碼

    javascript和jquery實現設置和移除文本框默認值效果代碼

    這篇文章主要介紹了javascript和jquery實現設置和移除文本框默認值效果代碼,本文實現的是類似html5 placeholder(空白提示)一種效果,需要的朋友可以參考下
    2015-01-01
  • 構造函數+原型模式構造js自定義對象(最通用)

    構造函數+原型模式構造js自定義對象(最通用)

    這種方式是javascript中最通用的創(chuàng)建對象的方式,下面用示例為大家介紹下
    2014-05-05
  • javascript中的隱式調用

    javascript中的隱式調用

    本篇文章給大家詳細介紹了javascript中的隱式調用相關知識點,對此有興趣的可以跟著小編一起學習下。
    2018-02-02

最新評論