function應用技巧

2021-09-19 11:06:51 字數 2130 閱讀 7642

1.用法一

此種用法的跟使用{}的區別是:它比較靈活,可以在內部定義變數、函式等

var obj = new function()
相當於:

var obj =
2.用法二

此種用法就是閉包而已

var test = new function()

}test(3);//6

相當於:

var test = (function()

})();

test(3);//6

function log()

}

1.建構函式return基本型別的值

function person()

var p = new person();

console.dir(p); // 此時p的值並不是2,而是乙個有乙個屬性a其值為2的物件

2.建構函式return object型別的值

function person()

}var p = new person();

console.dir(p); // 此時p為乙個物件

結論:

在構造器中return,如果是基本型別的值,那麼使用new操作符將會按照預期,返回乙個物件,就相當於建構函式中的return語句不存在一樣

在構造器中如果return的是乙個object型別(function/基本型別的包裝型別/object型別),那麼new操作符就相當於不存在一樣,也就是說,js引擎會把return出去的引用值作為變數,而不會把new出來的新物件的引用賦值給相應的變數。。

上述的屬性都可以通過函式名.屬性來引用,length是形參的個數。如果是函式表示式的話,name是空串。

function outer(a,b,c)

inner();

}outer(1,2,3,4);

對於區域性宣告的重複變數,只有第乙個宣告有效,也就是說,js引擎會忽略除了第乙個之外的所有的宣告

// 第一種

function test()

// 第二種

function test()

注意:第二種好像不符合對於區域性宣告的重複變數,只有第乙個宣告有效的說法,其實也是符合的,因為js引擎會對函式進行2輪處理,區域性變數的宣告在第1輪處理(變數宣告提公升),所以第1輪會保證只有乙個name被宣告,第2輪才進行區域性變數的初始化(**執行到賦值語句才進行初始化),即會把第1輪宣告的區域性變數賦值。。

嚴格模式下不能通過函式名.arguments的方式訪問arguments物件,不能訪問caller屬性

arguments物件擁有乙個callee屬性,該屬性是乙個指標,指向擁有這個arguments物件的函式

arguments物件內部屬性值是跟引數一一對應的,改變其中乙個的值都會影響另外乙個。

看**:

function test(a,b,c)

test(1,2,4);

注意:嚴格模式下不能訪問arguments物件的callee屬性

Function應用理解

inte ce function 引數型別 t 函式輸入的型別 r 函式的結果型別 實現乙個function 低端寫法 test void testfunction01 long zz 2l integer cc function.zz system.out.println cc lambda 之低...

Delphi中function的簡單應用

delphi把運算元據的方法分成了兩種,一種是function,另一種是procedure,分別稱為 函式 和 過程 這二者最大的差別就是函式擁有返回值而過程沒有,比如按鈕的事件響應過程,這就是乙個過程,因此它沒有返回值 而乙個簡單的函式如求字串長度的函式length,它的函式原形為 functio...

C 高階 function應用及底層實現

function 這個東西我了解也不是很多,如有錯誤,請大佬們指正。function是乙個函式包裝器模板,最早來自boost庫。在c11標準中將其納入標準庫。該函式包裝器模板可以包裝任何型別的可呼叫元素,例如普通函式和函式物件。我老師說,function最大的作用就是保留可呼叫元素的型別。我們先隨便...