JS 函式表示式

2021-09-11 19:17:33 字數 2880 閱讀 8420

引數1,引數2...]);

call使用語法:

函式名/方法名.call(物件,屬性1,屬性2...)

作用:可以改變this的指向

不同點:

引數傳遞方式不同

bind是複製乙個方法或者函式

xw.say.call(xh);

注:math.random( ) 返回介於 0(包含) ~ 1(不包含) 之間的乙個隨機數

函式中幾個屬性(了解):

name:函式名,唯讀(不可修改)

arguments:實參(呼叫該函式時傳入的具體引數)個數

length:形參(函式宣告時的變數)個數

caller:函式的呼叫者(f1函式在f2中呼叫,則f2為呼叫者)

備註:例:

function add(a,b) ;

add(1,2);             //宣告函式add時,a,b就是形參。呼叫函式add(1,2)  1,2就是實參

1.函式可作為引數使用

function f1(fn)

fn是引數,最後作為函式使用了,函式是可以作為引數使用的

例:陣列排序

var arr = [40,100,1,5,25,10];

方法一:

arr.sort(function(a,b));//輸出結果:1,5,10,25,40,100

方法二:

arr.sort(function(a,b)else if(a==b)else

});console.log(arr);

2.函式可作為返回值

function f1()

}var ff=f1();

ff();

3.匿名函式

f1(function () );

4.命名函式

function f2()

f1(f2);

注意:函式作為引數的時候,如果是命名函式,那麼只傳入命名函式的名字,沒有括號

typeof:獲取變數的資料型別

instenceof:判斷這個物件是不是某個資料型別

獲取某個物件的資料型別:[object object/array/date...]

object.prototype.tostring.call(物件);

函式的作用域:

函式的變數分為區域性變數和全域性變數

注:函式中定義的是區域性變數

函式的作用域就是變數的使用範圍

注:js中沒有塊級作用域(一對括號中定義的變數,這個變數可以在大括號外面使用)

作用域鏈:

變數的使用,從裡向外,層層的搜尋,搜尋到了就可以直接使用了;

若層層搜尋,搜尋到0級作用域的時候,如果還是沒有找到這個變數,結果就是報錯

var num=10; //作用域鏈 級別:0

function f1()

f2();

}f1();

預解析:

就是在瀏覽器解析**之前,把變數的宣告和函式的宣告提前(提公升)到該作用域的最上面

閉包

概念:函式a中有乙個函式b,函式b中可以訪問函式a中定義的變數或者是資料,此時形成了閉包(不嚴謹)

模式:1.函式模式的閉包(函式中有乙個函式);

2.物件模式的閉包(函式中有乙個物件)。

作用:快取資料,延長作用域鏈

優缺點:

快取資料,是優點也是缺點,因為資料沒有及時釋放

注意:區域性變數是在函式中,函式使用結束後,區域性變數就會被自動的釋放

閉包後,裡面的區域性變數的使用作用域鏈就會被延長

沙箱:

就是乙個環境,也可以叫黑盒,在這個環境中模擬外面真實的開發環境,完成需求,效果和外面的真實的開發環境是一樣的;

沙箱可以避免命名衝突

遞迴:

在函式中呼叫自己,但一定要有結束的條件,否則就是死迴圈。

應用:      遍歷;遞迴不輕易使用,效率很低

深拷貝:

獲取鍵值對:

for(var key in obj1)

正規表示式:

作用:匹配字串

建立正規表示式物件:

1.通過建構函式建立物件

2.字面量方式建立物件

1.正規表示式建立物件

var reg=new regexp(/\d+/);

var str="我的**號碼是100649";

var flag=reg.test(str);//呼叫字串驗證是否匹配

console.log(flag);

2.字面量方式建立物件

var reg1=/\d/;

var flag1=reg.test("小涵的幸運數字是369");

console.log(flag1);

簡寫:console.log(/\d/.test("小涵的幸運數字是9"));

偽陣列:(類陣列)

無法直接呼叫陣列方法或期望length屬性有什麼特殊的行為,不具有陣列的push,pop等方法,但仍可以對真正陣列遍歷方法

來遍歷它們。

典型的是函式的argument引數,還有像呼叫getelementsbytagname,document.childnodes之類的,它們都返回nodelist

物件都屬於偽陣列。

可以使用array.prototype.slice.call(fakearray)將陣列轉化為真正的array物件。

這裡把符合以下條件的物件稱為偽陣列:

1.具有length屬性

2.按索引方式儲存資料

3.不具有陣列的push,pop等方法

JS函式表示式

1.遞迴 function digui num else var d digui digui null d 3 改進 用arguments.callee num 1 代替 digui num 1 arguments.callee 是指向引數所在的函式的指標,code如下 function digui...

函式表示式

函式定義有以下兩種方式 一種是函式宣告,一種是函式表示式。函式宣告 在執行 之前會先讀取函式宣告,即函式宣告提公升。函式表示式 常用語法形式是常規的變數賦值語句,即建立乙個匿名函式並賦值給乙個變數。函式表示式在使用之前必須賦值,否則會出錯,這點與函式宣告提公升不同。能夠將匿名函式作為其他函式的值進行...

函式表示式

定義函式的方式有兩種 一種是函式宣告,另一種是函式表示式 函式宣告語法格式如下 function functionname arg0,arg1,arg2 關於函式宣告,有乙個重要的特徵就是函式宣告提公升,意思是在執行 之前會先讀取函式宣告 函式表示式語法格式如下 var functionname f...