js-函数
js函数表示方法有两种:函数声明和表达式法
一、函数声明
变量和函数均匀预解析
console.log(a) ====> var a ;
var a = 10 ; console.log(a) //undefined
a= 10;
表示方法:
表示方法:
function 函数名(){
}
简单举例:
20+30 a+b
function add(){
console.log(20+30) //50
}
二、表达式法
add()
var add = function(){
console.log(20+30) //50
}
其中add变量保存的是匿名函数在堆结构的地址
动态 参数对象 arguments 保存实参的值 数组的方式
var add = function(a) { //形式参数
var sum = 0;
for(var i =0;i<arguments.length;i++){
sum = sum+arguments[i];
}
//输出 返回值 return
return sum ;
}
add(1,2,3,4,5); //实际参数
// arguments = [1,2,3,4,5]
三、两种方法区别
函数声明 可以先调后定 不报错 有变量提升规则
函数表达式法 必须先定义后调用
四、递归函数
思想:将大的问题分解成相似的子问题
方法:自己调用自己
但是不高效 循环——>调用函数
清晰 ###系列规律
递归函数表达方式:
(1)自定义一个有参有返回值的函数
(2)提取递归的出口
(3)前进段(规律),返回段(栈自发进行的)
出口表示方法:
if(){
return ;
}
前进段
else{
return 序列规律表达式;
}
下面我们通过递归函数来解决一些实际案例
案例一:猴子吃桃子
猴子每天吃比前一天的一半还多1个桃,第十天的时候剩一个桃子,问你第一天有多少
递归函数表达方式
function monky(day){
if(day==10){
return 1;
}
else{
return (monky(day+1)+1)*2;
}
}
console.log(monky(1));
也可以使用循环方法实现
案例二、求n的k次幂
//prompt() 获取用户输入 与python里面的input()作用一样
var n=parseInt(prompt('请输入底数:'));
var k=parseInt(prompt('请输入指数:'));
function cimi(n,k){
if(k==1){
return n;
}
else{
return (cimi(n,k-1))*n;
}
}
console.log(cimi(n,k));
同样也可以使用循试实现
案例三、写出斐波那契数列
function Fibonacci(a,b,n){
console.log(a+' ');
if(n<1){
return
}
else{
return Fibonacci(b,a+b,n-1);
}
}
console.log(Fibonacci(1,1,5));
可以使用三个变量交换来简单写出菲波那切数列
var a = 1;
var b = 1;
var c = 0;
for (var i = 1; i < 10; i++) {
if(i<=2){
document.write(1+',')
continue
}
else{
c = a + b;
a = b;
b = c;
document.write(c+',')}
}
写出的是十个菲波那切数
案例四、使用函数方法表示当前时间
此案例用不到递归函数,是Date()方法的练习
//需求:2019-03-01 09:42:06
/*参数:需要转换的时间毫秒数*/
function formatDate(d) {
var year = d.getFullYear();
var month = d.getMonth(); //3(2) 0 -11
var day = d.getDate(); //一个月中的某一天
var hours = d.getHours();
var min = d.getMinutes();
var sec = d.getSeconds();
// document.write(year,month,day,hours,min,sec);
return [year+'-'+pingZero(month+1)+'-'+pingZero(day)+' '
+pingZero(hours)+':'+pingZero(min)+';'+pingZero(sec)]
}
function pingZero(t) {
return t<10?'0'+t:t;
}
/* new Date() 实例化一个时间对象*/
console.log(new Date()) //Fri Mar 01 2019 09:40:39
document.write(formatDate(new Date()))
var myP = document.getElementById('myP')
// setInterval(formatDate(){
//
// })
还没有评论,来说两句吧...