JS基礎學習之 函式

2021-06-17 20:11:43 字數 1664 閱讀 3525

很多東西時間一長記憶就開始模糊,總是感覺記得不是很清楚,就如js。打算把js的一些基礎的容易出錯的地方記錄下來,時不時看一下,這樣才能記憶的更牢固。

函式的學習

1.函式的引數是可變長的,這個較簡單一般沒人忘掉。

例如: 

function main(arg1,arg2)
呼叫時可以傳遞多個引數,例如  main(1,2,3);

2.js函式是不能過載的。

3.命名空間

js本沒有命名空間一說,只是大家為了oo給模擬類似的功能。

例如:     

var com = {};

var com.test.util = {};

只是物件一層層的疊加而已。

4.函式的巢狀         

例如 :

var outname = "外面";

function outerfn()

return innerfn;

}var cache = outerfn();

cache();

如上面的例子呼叫cache()方法後,按說innername已經不再作用域了,但是還能正常訪問,我記得犀牛書中有句話是這樣說的「js的變數是在定義它的作用域,不是在               運 行時的作用域」,通過這句話可以很好的解釋為什麼innername還能使用。

5.函式既是資料也是物件

var myfn = function fn()

alert(myfn);

執行結果就是把該函式通過tostring()方法,列印出來函式**。此時函式就是看成string字串。

var fn = new function('x','y','alert("test")');

alert(fn instatnceof object);

fn();

執行結果就是true,然後是test;function規則是最後乙個引數是函式體。但是據說這種執行效率很慢,通過eval()執行的時候也是這種方式所以效率很慢。

6.函式的例項屬性

函式的例項屬性有 arguments,callee .caller 、length 、 prototype 

arguments  指實際傳遞的引數,具有類似陣列的特性,arguments[0],arguments[1],是指獲取對應的第乙個,第二引數,但是arguments實際不是乙個陣列。

callee熟悉是在arguments定義,用來只想函式自己,主要用於遞迴,例如

function fn(n)else

}

caller 是指函式的呼叫者。

prototype 是函式非常重要的屬性。

注意的是:函式、原型、例項之間的關係,建構函式都用乙個屬性是prototype,而prototype都有乙個屬性指向建構函式,函式的例項則都有個乙個屬性指向prototype。

這也是繼承機制實現的基礎。

7.函式的作用域問題

函式的執行過程:

(1)建立活動物件,函式執行之前js執行環境會建立乙個活動物件。

(2 ) 分配作用域鏈。

(3)繫結this

Js基礎之函式

定義函式 我們使用function標籤來定義函式 使用函式 j ascript函式定義完畢是不能自動執行的,需要我們呼叫或者事件觸發,比如點選事件,滑鼠事件,鍵盤事件等。下面我們以點選事件為例,呼叫函式 引數 當我們呼叫函式的時候想給函式傳遞一些值的時候,可以使用引數。返回值 乙個函式執行完畢,可以...

JS學習之函式

doctype html utf 8 函式 title 舉例 function sayhi sayhi 函式的呼叫 案例 利用函式計算1 100之間的累加和,1.宣告函式 function getsum console.log sum 2.函式的呼叫 getsum script head body ...

前端學習之js函式

函式 函式是由事件驅動的或者當它被呼叫時執行的可重複使用的 塊。函式的宣告 函式的使用跟變數一樣需要宣告。1 function fun alter 我是函式 fun 函式不呼叫,自己不執行 2.var fun1 function fun alter 我是函式 fun1 3.var fun2 new ...