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 夾竹桃科 長...