函数定义
1、函数声明
function 函数名([参数1,参数2,……]){
函数体
}
2、函数表达式
① 命名函数表达式
var test = function abc(){
document.write(‘a’);
}//js中不会输出指针地址
//执行test(),输出a,test.name = abc
//控制台输入test,输出 function abc(){ document.write(‘a’); }
//而输入abc,则会报错,abc is not defined
② 匿名函数表达式(常用)
var demo = function (){
document.write(‘b’);
}
//demo.name = demo
组成形式
1、函数名称:创建函数的名称,函数名是唯一的
2、参数:可选,外界传递给函数的值,当有多个参数时,各参数用“,”分隔
function sum(a,b){
//arguments---[1,2,"abc",45]实参列表
for(var i = 0; i < arguments.length; i++){
console.log(arguments[i]);
}//控制台输出所有实参
//sum.length为形参长度/个数
}
sum(1,2,"abc",45) //实参比形参多或形参比实参多均不报错,可以运行
//任意个数求和(不定参数)
function sum(){
//利用实参列表
var result = 0;
for(var i = 0; i < arguments.length; i++){
result += arguments[i];
}
console.log(result);
}
sum(1,2,3,4,5); //
① 形参
② 实参
//形参的值与arguments对应的值相互影响改变(映射),但两个值不是同一个东西
function sum(a,b){
//arguments---[1,2]
var a = 2;
//console.log(arguments[0]); 输出结果为2
arguments[0] = 3;
//console.log(a); 输出结果为3
}
sum(1,2);
//arguments里的值一开始有几个就是几个,即使在函数内定义,arguments也不会增加
function sum(a,b){
//arguments---[1]
b = 2;
console.log(arguments[1]); //输出结果为undefined,b和arguments[1]没有映射
}
sum(1);
3、返回值
return; 既终止函数也返回变量
作业
1、写一个函数,功能是告知你所选定的小动物的叫声
function voice(animal) {
switch(animal) {
case "dog": document.write('汪汪汪');break;
case "cat": document.write('喵喵喵');break;
case "sheep": document.write('咩咩咩');break;
case "tiger": document.write('嗷呜');break;
}
}
2、写一个函数,实现加法计算器
function sum(){
var result;
for(var i = 0; i < arguments.length; i++){
result += arguments[i];
}
document.write(result);
}
sum(1,2,3,4,5,6,7,8,9,10);
3、定义一组函数,输入数字,逆转并输出数字的汉字形式
function reverse(){
//输入字符串类型的数字 字符串的第几位的值:str.charAt() 或 str[]
var num = window.prompt('input:');
var str = "";
for(var i = num.length - 1; i >= 0; i--){
str += transfer(num.charAt(i));
}
document.write(str);
}
function transfer(target){
switch(target){
case "0": return "零";
case "1": return "壹";
case "2": return "贰";
case "3": return "叁";
case "4": return "肆";
case "5": return "伍";
case "6": return "陆";
case "7": return "柒";
case "8": return "捌";
case "9": return "玖";
}
}
4、写一个函数,实现 n 的阶乘
function factorial(n){
if(n == 1 || n == 0){
return 1;
} //递归的出口
return n * factorial(n - 1);//规律
}
5、写一个函数,实现斐波那契数列
function fibonacci(n){
if(n > 0 || n <= 2){
return 1;
} //出口
return fibonacci(n - 1) + fibonacci(n - 2);//规律
}
写一个方法,求一个字符串的字节长度。(提示:字符串有一个方法 charCodeAt(); 一个中文占两个字节,一个英文占一个字节)
定义和用法:charCodeAt()方法可返回指定位置的字符的 Unicode 编码。这个返回值是0 - 65535之间的整数。(当返回值是 <=255 时,为英文,当返回值 >255 时为中文)
语法:stringObject.charCodeAt(index)
var str = "hello world 邓哥身体好";
//str.charCodeAt(0);第一个字符 h 的Unicode编码
function strlength(str){
var count = 0;
for(var i = 0;i < str.length;i ++){
if(str.charCodeAt(i) > 255){
count +=2;
}else{
count++;
}
}
return count;
}
-------------方法二----------------
function strlength(str){
var count = str.length;
for(var i = 0;i < str.length;i ++){
if(str.charCodeAt(i) > 255){
count++;
}
}
return count;
}