1.定義
- 函數聲明
- 函數表達式
2.組成形式
- 函數名稱
- 參數
- 形參
- 實參
- 返回值
function test() {
document.write('a');
document.write('b');
document.write('c');
}
if (1 > 0) {
test();
}
if (2 > 0) {
test();
}
if (2 > 0) {
test();
}
//簡化代碼,把重複用的代碼放到一個函數裏,用的時候直接調用函數名
function test() {
var a = 123;
var b = 234;
var c = a + b;
document.write(c);
}
test();
//只有讓他執行的時候纔會執行,而且可以執行很多次
函數聲明
function test() {}
//函數名,theFirstName多個單詞小駝峯
函數表達式1.命名函數表達式
var test =function abc() {
console.log('a');
}
//test的函數名是abc
2.匿名函數表達式var demo =function () {
console.log('b');
}
//忽略函數名,demo的函數名是demo
//簡稱爲函數表達式
函數組成形式function 函數名(形參) {
函數體
}
函數名(實參);
function sum(a, b) {
var c = a + b;
document.write(c);
}
sum(1, 2);
function sum(a, b) {
if(a > 10) {
document.write(a - b);
}else if(a < 10) {
document.write(a + b);
}else{
document.write(10);
}
}
sum(11, 2);
function sum(a) {
//arguments -- [11,2,3] 實參列表
for(var i = 0; i < arguments.length; i++) {
console.log(arguments[i])//打印實參列表
}
}
sum(11, 2, 3);
//參數不限制數量,形參比實參多(多出來的形參沒有值),實參比形參多(arguments放實參列表)
function sum(a, b, c, d) {
if(sum.length > arguments.length) {
console.log('形參多了');
}else if(sum.length < arguments.length) {
console.log('實參多了');
}else{
console.log('相等');
}
}
sum(11, 2, "a");
//sum.length形參的長度,arguments.length實參的長度
function sum() {
//arguments [1,2,3,4,5,6,7]
var result = 0;
for(var i = 0; i < arguments.length; i++) {
result += arguments[i];
}
console.log(result);
}
sum(1,2,3,4,5,6,7,8,9);
//不知道參數是多少的情況下,求和
function sum(a, b) {
//arguments [1,2]
//var a = 1;
a = 2;
arguments[0] = 3;
console.log(a);
}
sum(1, 2);
//形參變實參列表跟着變,實參列表變,形參也跟着變,映射關係,不是同一個變量
function sum(a, b) {
//arguments [1]
b = 2;
console.log(arguments[1]);//undefined
}
sum(1);
//實參列表出身的時候有幾個就是幾個,不會再增加,b跟實參不映射
返回值
function sum(a, b) {
console.log('a');
console.log('b');
return;//終止函數
}
sum(1);
function sum() {
return 123;//返回值+終止函數
}
var num = sum();
//num就等於123
function myNumber(target) {
return +target;//返回參數
}
var num = myNumber('123');
console.log(typeof(num) + " " + num);//number 123
練習
1.寫一個函數,功能是告知你所選定的小動物的叫聲。
function scream(animal) {
switch(animal) {
case "dog" :
document.write('wang!');
return;
case "cat" :
document.write('miao!');
return;
case "fish" :
document.write('o~o~o!');
return;
}
}
scream('dog');//wang!
2.寫一個函數,實現加法計數器。
3.定義一組函數,輸入數字,逆轉並輸出漢字形式。
function reverse() {
var num = window.prompt('input');
var str = "";
for(var i = num.length - 1; i >= 0; i --) {
str += transfer(num[i]);
}
document.write(str);
}
function transfer(target) {
switch(target) {
case "1" :
return "壹";
case "2" :
return "貳";
case "3" :
return "叄";
}
}
4.寫一個函數,實現n的階乘。
//遞歸,能把代碼變得簡潔
function mul(n) {
if (n == 1 || n == 0) {
return 1;
}
return n * mul(n - 1);
}
mul(5);
5.寫一個函數,實現斐波那契數列。
function fb(n) {
if (n == 1 || n == 2) {
return 1;
}
return fb(n - 1) + fb(n - 2);
}
fb(5);
作用域初探- 作用域定義:變量(變量作用域又稱上下文)和函數生效(能被訪問)的區域
- 全局、局部變量
- 作用域的訪問順序
//外面的函數不能訪問裏面的,裏面的函數能訪問外面的