JavaScript 函式的初識

2021-09-21 01:42:22 字數 4065 閱讀 3258

js - 函式

可以通過函式封裝任意多條語句,而且可以在任何地方,任何時候進行呼叫,使用非常靈活;

// 基本的語法

function functionname(argument1,argument2)

//下面是函式的乙個例項,

function diff(a,b)

diff(10,5);//輸出5

diff(20,2);//輸出18

函式可以通過它的函式名來呼叫,後面加(),就可以執行了

上面的diff分別輸出的是5和18;a和b是函式的兩個引數,最終的結果是列印在控制台的;

函式還有乙個屬性,就是可以 return;

知識點1:函式的返回值只能通過return來返回,除了return以外,沒有任何宣告可以表示返回值

ecma中函式在定義的時候,不要求函式是否返回乙個值,但是每個函式都有return的權利;

任何函式在任何時候都可以通過return語句返回的值來實現把值返回給外部變數(return的位置是任意的);

function diff(a,b)

var diffnumber=diff(10,5);

console.log(diffnumber);

//diffnumber用來接收函式的返回值,如果return了乙個值,但是外部沒有變數去接收它,就失去了return的意義了;

知識點2:return的特性:無論return在**,只要有執行了return同一條的**後,函式立即停止,並且立即退出,因此位於return語句之後的任何**都永遠不會執行; (ec前端)

function diff(a,b)

var diffnumber=diff(10,5);

console.log(diffnumber);

知識點3:乙個函式可以多條return;

寫乙個函式,計算兩個數之間的相差多少;

function diff(a,b)else

}var diffnumber1=diff(10,5);

var diffnumber2=diff(5,10);

console.log(diffnumber1);//5

console.log(diffnumber2);//5

這個函式diff用來計算兩個數之間才差值;如果a比b小,則用b-a;否則a-b;函式中用if分為兩個分支,分別具有自己的return語句來執行正確的計算邏輯;

知識點4:return語句可以不帶任何返回值,這種情況下,函式返回值是undefined;這種寫法,一般用在需要提前停止函式又不需要返回值的情況;

function testreturn (arg)

console.log("一些處理引數的**")

}testreturn("");

return的總結

↑ 返回目錄

//function語句的定義方法

function test1(arg1,arg2)

//函式直接量的定義方法

var test2 = function(arg1,arg2);

var utility=

};//建構函式的定義方法

var test3 = new function("arg1","arg2","console.log('建構函式的定義方法:',arg1+arg2)");

前兩種定義方式,比較常見,最後一種做了解即可

↑ 返回目錄

1.直接呼叫: 函式名(實參列表)

function test1(arg1,arg2)

//直接呼叫

test1(1,2);//function語句的定義方法: 3

2.在鏈結中呼叫

click me
3.在事件中呼叫

click me
4.遞迴呼叫

在函式內部呼叫函式自身

click me
函式的呼叫還是非常靈活的;

↑ 返回目錄

console.log(test1.tostring());

function test1()

↑ 返回目錄

test1(1,2);//[1,2]

test1(1,2,3,4,5);//[1, 2, 3, 4, 5]

function test1()

argutments在普通模式裡,可以在函式內部修改函式的值,但是不建議那麼做;這點在嚴格模式下也有限制

test1(1,2);//[1,2]

function test1()

console.log(arguments);//uncaught referenceerror: arguments is not defined

test1(1,2);//1 2 undefined

function test1()

test1(1,2,3,4,5);// 輸出5

function test1()

test1(1,2,3,4,5);// 輸出函式本身

function test1()

function callerdemo()  else 

}function handlecaller()

handlecaller();

function calleedemo()

calleedemo();

函式的引數是函式的靈魂;ecma中的函式不在乎傳來多少個引數,也不在乎你傳進來的是什麼型別的,即使你定義的函式值接受兩個引數,在呼叫的時候未必嚴格的傳進兩個實參,你傳乙個,三個,不傳都是沒有問題的、這就是函式的多型

原理是因為ecma是把函式用在內部用乙個」陣列」來表示的,函式接受到的始終都是這個陣列,並不關心這個」陣列」是否包含引數,已經包含的都是什麼引數,可以通過arguments[index]這種的方式來訪問,也可以通過arguments.length的值來確定傳進來了多個引數;

function testargument()

testargument("1","2");//hello argument[0]:1 and argument[1]:2

testargument("1");//hello argument[0]:1 and argument[1]:undefined

testargument();//hello argument[0]:undefined and argument[1]:undefined

函式的乙個特點,形參只是提供了操作的便利,但並不是必須的;函式的定義和呼叫與引數是沒有關係的,只有在函式內部引用了形參才與實參個數和值有關係;

如果函式只是定義了,但是沒有執行,那就是脫褲子放屁了;因為對程式不會有任何意義;

function sum(a,b)else if(arguments.length===1)else

}sum(10,8);//第1個引數和第二個引數的和是:108

sum(10);//block,只傳了乙個引數 10,讓我如何相加

sum();//我拒絕運算!

上面就牽扯到了函式的多型,根據不同的引數來做不同的事情;

↑ 返回目錄

↑ 返回目錄

JavaScript物件及初識物件導向

建立物件的兩種方法 方法 1 var flower new object flower.name 張三 flower.pwd admin flower.show function 方法 2 var flower 建構函式 function flower name,pwd var flower new...

JavaScript物件及初識物件導向

自定義物件 基於object物件的方式建立物件 var 物件名稱 new object var flower new object flower.name 長春花 flower.genera 夾竹桃科 長春花屬 flower.area 非洲 帶 熱帶以及中國大陸的華東 西南 中南等地 flower....

JavaScript物件及初識物件導向

number 數值型別 string 字串型別 boolean 布林型別 null 空型別 undefined 未定義型別 object 語法 var 物件名稱 new object var flower new object flower.name 長春花 flower.genera 夾竹桃科 長...