函数
1.定义
1.命名函数表达式
function 函数名(形参) {
函数体
}
函数名(实参);
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);
作用域初探
- 作用域定义:变量(变量作用域又称上下文)和函数生效(能被访问)的区域
- 全局、局部变量
- 作用域的访问顺序
//外面的函数不能访问里面的,里面的函数能访问外面的