美文网首页
JS中的函数定义之函数声明与函数表达式

JS中的函数定义之函数声明与函数表达式

作者: 羞羞的王大锤 | 来源:发表于2020-03-14 23:53 被阅读0次

我们一般见到的函数可能是这样的

function love(name){
  console.log(`爱你,${name}`)
}
love('chuichui');

你可能还见过这样的函数

var love = function(name){
   console.log(`爱你,${name}`)
}
love('chuichui');

其实,这是函数定义的两种方式,一种是函数声明,另一种是函数表达式
那他们有什么不同呢?

函数声明和函数表达式

要搞清楚他两的差别,我们先需要研究一下浏览器在如何处理代码的

var dream = true
var speak = function(){
    console.log('好像大声说:')
}
function love(name){
   console.log(`爱你,${name}`)
}

if(dream){
  speak()
  love('chuichui')
}

下面我们还原一下浏览器分析和执行上述代码过程

  1. 在分析阶段,会从上到下扫描代码,在其中查找函数声明,这里找到了love函数
  2. 浏览器创建love函数,并将得到的函数引用赋给与函数同名的变量
  3. 等处理完所有的函数声明之后,浏览器会回头开始执行代码
  4. 当看到speak时,首先会创建一个名为speak的变量,然后看到右边是一个函数表达式,这时候浏览器会将这个函数存储起来,并将这个函数的引用赋给speak变量

在这个过程过程你可能发现一些不同,总结一下:

  • 使用函数声明时,函数在代码执行前创建;使用函数表达式时,函数在运行阶段创建
  • 使用函数声明时,会创建一个与函数同名的变量,并让它指向函数;使用函数表达式时,一般不需要给函数指定名称

这些不同会带来什么样的影响呢?
因为浏览器在代码执行前查找一遍函数声明,所以使用函数声明定义的函数,不需要关心函数定义位置,在任何地方都可以调用;而函数表达式则是在代码执行是按照顺序定义的,所以在函数定义之前调用会报错

love('chuichui')
function love(name){
   console.log(`爱你,${name}`)
}
// ✅爱你,chuichui

speak()
var speak = function(){
    console.log('好像大声说:')
}
// ❌speak is not a function

最后 🙌

好啦,以上就是我本次分享的全部内容啦,如果你觉得我的文章对你有一丢丢帮助,那么请不要吝啬你的赞👍哦,阿门~

相关文章

  • Typescript之函数

    定义一个函数 定义函数有2种方式, 分别是函数声明和函数表达式 js中定义函数 ts中定义函数在ts中, 我们需要...

  • JavaScript基础学习笔记(二)

    函数定义 函数的声明 函数表达式 JS函数可以通过一个表达式定义,函数表达式可以存储在变量中。当存储在变量中之后,...

  • JS函数表达式(JS高级程序设计笔记)

    函数表达式 JS定义函数的方式有两种:一种是函数声明,另一种就是函数表达式。函数声明的语法是这样的。 函数声明,它...

  • js ------ 函数声明和函数表达式

    js创建对象几种方式 js 函数声明 和 函数表达式函数声明 函数表达式 函数表达式: 下面的函数都会直接运行

  • level-17

    函数声明和函数表达式有什么区别 (*) 在javascript中,函数有两种定义写法,函数定义表达式和函数声明,其...

  • js高程学习

    定义函数的方式:函数声明函数表达式(匿名函数) 函数声明提升函数声明总是在执行代码之前 函数表达式定义:先赋值再用

  • 函数表达式和函数声明

    定义函数两种方式:A(函数声明)、 B(函数表达式)A:函数声明方式定义函数:函数声明的重要特性:函数声明提升。...

  • 函数声明以及词法作用域

    函数声明和函数表达式有什么区别 函数在JS中有三种方式来定义: 函数声明(function declaration...

  • JavaScript中的函数与闭包

    查阅书籍:JavaScript权威指南 函数声明与函数表达式 用函数声明定义的函数,函数可以在函数声明之前调用,而...

  • 函数与作用域

    1.函数声明和函数表达式有什么区别?Javascript 中函数声明和函数表达式是存在区别的,函数声明在JS解析时...

网友评论

      本文标题:JS中的函数定义之函数声明与函数表达式

      本文链接:https://www.haomeiwen.com/subject/scqashtx.html