关于函数的概念知识以及一些案例的总结

关于函数的基础知识以及一些案例的总结

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>Document</title>

</head>

<body>

</body>

<script>

//函数

// 概念:由一堆代码组成,实现一些特定的功能,通过函数自身和一些事件实现

//函数的创建

// 1,声明式

// function fn(){}

// function:声明函数的关键字

// fn:函数名

// ():存放函数的形参

// {}函数体,函数的执行语句

// fn() 函数的执行


// 难点:回调函数

// function fn(a){

// console.log(a);

// a(function(c){

// console.log("hello")

// c();

// })

// }

// fn(function(b){

// console.log(b);

// b(function(){

// console.log("脑袋疼")

// })

// })

// fn()将function(b){console.log(b)}作为实参传给了函数fn 此时(a)接受到的相当于a=function.log(b){console.log(b)}

// 这就相当于一个新的函数a;此时执行a()相当于执行函数a,如果实参a()里面还是一个新的函数,那个就相当于创建了一个新的函数b,就是b=function(c){console.log("hello")}

// 这样子执行b()执行了函数b 得到了hello的值


// 函数的实参与形参的关系

// 1,实参与形参之间一一对应

// 2,当实参多余形参时,实参存放在arguments中

// 3,当形参多余实参时,多余的形参为underfind,因为这些形参声明了但未经过实参的赋值


// arguments的用法:

// 定义:arguments是函数中的一个数组,专门用来存放函数中的实参,只有在函数中才能获取

// demo:

// 1.任意个数字的和

// function fn(){

// var sum=0;

// for(var i=0;i<arguments.length;i++){ //注意:这里的i代表的不是数组,而是由arguments 数组的序列号 由0 开始到arguments.length-1;

// sum+=arguments[i]

// }

// console.log(sum);

// }

// fn(3,2,34,36,242);


// demo:

// 1.让三个不同大小的数字,按照由大到小的顺序依次打印出

// function fn(a,b,c){

// if(a>b&&a>c){

// if(b>c){

// console.log(a,b,c);

// }else{

// console.log(a,c,b);

// }

// }else if(b>a&&b>c){

// if(a>c){

// console.log(b,a,c);

// }else{

// console.log(b,c,a);

// }

// }else if(c>a&&c>b){

// if(a>b){

// console.log(c,a,b);

// }else{

// console.log(c,b,a);

// }

// }

// }

// fn(7,4,6)


// 作用域:变量生效的区域

// 作用域的分类:

// 全局:整个代码的区域

// 局部:一个函数就是一个局部

// 全局作用域下的变量叫做全局变量

// 局部作用域下的变量叫做局部变量

// 函数的形参也是一个变量,函数是一个局部作用域,所以形参是一个局部变量


// 变量的生命周期:

// 全局变量:一直存在,随时可以被取用

// 局部变量:随着函数的运行开始而开始,函数的结束而结束


// 提升:

// 1,变量的提升;使用var声明的变量,会提升到当前作用域开始的位置,被声明,在原位赋值

// 2,函数的提升:只要使用function声明的函数,都会整体提升,在当前作用域内都可以被使用

// 但是使用赋值式创建的函数,提升的是声明,而不是函数


// 当函数名与变量同名时,变量会在函数上面的位置,导致函数生效;

function fn(){

console.log(a); //f2

var a = "hello";

console.log(a); //"hello"

function a(){1}

console.log(a); //"hello"

a = "world";

console.log(a); //"world"

function a(){2}

console.log(a); //"world"

}

// 以上的式子相当于

// function fn(){

// var a;

// function a(){1}

// function a(){2}

// console.log(a); //f2

// a = "hello";

// console.log(a); //"hello"

// console.log(a); //"hello"

// a = "world";

// console.log(a); //"world"

// console.log(a); //"world"

// }

// fn();


// 重点!!函数的递归:

// 递归实质上就是一个死循环,重要的是他的停止条件,这时就需要return来帮助函数终止运行

// demo:

// 1.计算5的阶乘

// function fn(n){

// if(n==1){

// return 1;

// }else{

// return n*fn(n-1);

// }

// }

// console.log(fn(3));


// 2.用递归计算1,1,2,3,5,8,13....

// function fn(n){

// if(n==1||n==2){

// return 1;

// }else{

// return fn(n-2)+fn(n-1);

// }

// }

// console.log(fn(3));

// 3.求一个数的最大公约数

// function fn(m,n){

// var r=m%n;

// m=n;

// n=r;

// if(r==0){

// return m;

// }else{

// return fn(m,n);

// }

// }

// console.log(fn(24,6));


// 递归的总结,递归是一个递和归的过程,在归的过程中,判断递的条件,不成立的话将fn(m,n)再进入到函数中

// 执行一次;

// 递归实质上就是一个死循环

// 递归的样式如下

// function fn(){

// fn();

// }

// fn();

// 所以说,让递归停止的条件很重要


// 构造函数:

// 构造函数是一种函数的存储方式


// 数据的存储方式:

// 1,字面量 var a=123;

// 2,构造函数,var b=new Number(123);


// 重点 对象:对象是对事物的描述

// 对象的作用是存储数据

// 对象的实质就是键值对(属性:属性值)

// 键值对之间用,隔开

// 对象中的属性叫做属性

// 对象中的函数叫做方法名

// 语法:对象.属性(方法名)

</script>

</html>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,813评论 0 38
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,034评论 0 2
  • 通常来说,一个函数就是一个可以被外部代码调用(或函数本身递归调用)的“子程序”。和程序本身一样,一个函数的函数体是...
    betterwlf阅读 485评论 0 0
  • 1.函数声明和函数表达式有什么区别 (*) 区别: 函数声明后面的分号可加可不加,不加也不影响接下来语句的执行,但...
    Sheldon_Yee阅读 401评论 0 1
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,073评论 1 10