JavaScript第四天 函数

bg.png

一.函数

function,是被设计为执行特定任务的代码块
函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于精简代码方便复用

  • 可以多次调用
  • 可以在任意时刻掉用(当然前提是已经声明好了)
  1. 语法
    语法:
    function 函数名(){
    代码块
    }

调用函数语法:
函数名()

扩展:
1.函数声明的时机,是在js刚进入执行环境的时候(函数声明会提前)

2.函数名命名规范

  • 和变量命名基本一致 _ $ 数字不能开头
  • 尽量小驼峰式命名法
  • 前缀应该为动词 常用 get 获取某个值 set 设置某个值
  • 命名建议:常用动词约定


    1.png

    3.封装步骤:

  • 分析有没有相同代码
  • 抽取相同代码,并给一个名字
  • 使用这个名字 == 执行这段代码
    4.函数的复用代码和循环重复代码有什么不同?
    循环代码写完即执行,不能很方便控制执行位置
    随时调用,随时执行,可重复调用

二.函数传参

1.有参数的函数的声明调用语法:

  • 声明: function 函数名(形参,...,形参)

  • 调用: 函数名(实参,实参,...)


    2.png

    2.形参和实参

  • 形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数) 相当于声明变量

  • 实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数) 相当于变量赋值

  • 形参可以理解为是在这个函数内声明的变量(let num;)实参可以理解为是给这个变量赋值(比如 num1 = 10)

  • 变量声明了,但没赋值 默认值为 undefined( 形参如果不被赋值,就是undefined)

  • 开发中尽量保持形参和实参个数一致

  • 我们曾经使用过的 alert('打印'), parseInt('11'), Number('11') 本质上都是函数调用的传参
    3.函数返回值
    语法:
    return 数据

  • 在函数体中使用 return 关键字能将内部的执行结果交给函数外部使用

  • 函数内部只能运行到 1 次 return,并且 return 后面代码不会再被执行,所以 return 后面的数据不要换行写

  • return会立即结束当前函数

  • 函数可以没有 return,这种情况函数默认返回值为 undefi

三.作用域

1.作用域概述:
通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
2.作用域分为:

  • 全局作用域:作用于所有代码执行的环境(整个 script 标签内部)或者多个 js 文件
  • 局部作用域:作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域
    -块级作用域:块作用域由 { } 包括,if语句和for语句里面的{ }等
<script>
    // 1.全局作用域: script顶层范围
    // 全局变量
    // 访问范围:定义后的任何位置
    // 运行位置在变量之后才能访问 (不是书写位置)
    let top = 1

    function x(){
      //2. 局部作用域(函数作用域)
      // 局部变量
      // 只能在当前函数内部使用
      let num = 2

      if(x){
        // 3. 块级作用域
        // 块级变量
        // 只能在块作用域里访问
        let sum = 3
      }
    }
  </script>

3.在JavaScript中,根据作用域的不同,变量可以分为

  • 全局变量:全局变量在变量定义之后区域可以访问和修改

  • 局部变量:局部变量只能在当前函数内部访问和修改

  • 块级变量:let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问
    4.作用域的特殊情况

  • for循环,声明初始值的变量,也是块级变量

  • 函数形参,是一个局部变量

  • 在块级或局部,未声明变量,直接赋值变量,相对于创建了一个全局变量

    for (let i = 0; 1 < 4; 1++) {
      document.write(i)
    }
    console.log(i)
    // 2.函数形参,是一个局部变量
    function fun(num){

    }

    // 3. 在块级或局部,未声明变量,直接赋值变量,相对于创建了一个全局变量
    if(ture){
      foo = 2
    }
    console.log(foo)

作用域链:

  • 只要是代码,就至少有一个作用域
  • 写在函数内部的局部作用域
  • 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
  • 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链
    6.匿名函数


    5.png

    6.1将匿名函数赋值给一个变量,并且通过变量名称进行调用 我们将这个称为函数表达式
    语法:


    6.png

    6.2立即执行函数
    作用:避免全局变量之间的污染
    语法:
    7.png
  • 无需调用,立即执行,其实本质已经调用了
  • 多个立即执行函数之间用分号隔开

将来的你一定会感谢现在拼命的自己

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

推荐阅读更多精彩内容