函数表达式(Function Expression):将函数定义为表达式语句(通常是变量赋值,也可以是自调用形式)的一部分。函数表达式可以是命名的,也可以是匿名的。可以没有函数名,常被成为匿名函数,如果有,函数名也只存在自身函数作用域,并且函数表达式不能以“function”开头,函数表达式可以存储在变量或者对象属性中。

函数声明(Function Declaration):是一种独立的结构,它会声明一个具名函数,并必须以function开头。且函数声明会进行函数提升,使它能在其所在作用域的任意位置被调用,即后面的代码可以将此函数通过函数名赋值给变量或者对象属性。

Function()构造器:使用Function()构造器 函数,不推荐。

//Function()构造器
var f =new Function()// 函数表达式
var f = function() {console.log(1);
}// 函数声明
function f (){console.log(2);
}console.log(f())
//1

因为函数声明的优先级高于变量声明,变量提升,变量声明在后,以最后声明的值为结果,所以是1。

怎么区分函数声明和函数表达式:
表面上,以function开头进行声明,并且含有函数名,一定是函数声明。
内在的,

  1. 函数提升:就是指允许先调用函数,再进行声明,因为声明会自动提升至调用前面执行。函数声明,会将整个函数进行提升.而函数表达式则不会提升,它是在引擎运行时进行赋值,且要等到表达式赋值完成后才能调用。
  2. 函数表达式是可以没有函数名的,如果有,它的函数名也只存在于自身的作用域,var f = function fun(){console.log(fun)}其他地方是没有的.这也避免了全局污染,也方便递归.

js声明函数的几种方式相关推荐

  1. js声明变量的三种方式

    JS 声明变量的三种方式 (1)使用变量步骤:a.声明-->b.赋值-->3.调用 正确用法: <script type="text/javascript"> ...

  2. JS定义函数的两种方式:函数声明和函数表达式

    函数声明 关于函数声明的方式,它的一个重要的特性就是函数声明提升(function declaration hoisting),意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它 ...

  3. php变量和js变量的区别吗,JS声明变量的3种方式和区别

    JavaScript 是弱类型语言,可以不需要声明变量而直接使用.这样虽然简单但不易发现变量名方面的错误,所以不建议这样做.通常的做法是在使用 JavaScript 变量前先声明变量.目前,JavaS ...

  4. JS 声明全局变量的三种方式

    JS中声明全局变量主要分为显式声明或者隐式声明下面分别介绍. 声明方式一: 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量 ...

  5. js setTimeout 传递带参数的函数的2种方式

    js setTimeout 传递带参数的函数的2种方式 Created by Marydon on 2018年9月14日 1.准备工作 function sayYourName(param) {ale ...

  6. JavaScript定义函数的几种方式

    上节我们介绍了<JavaScript工作体系中不可或缺的函数>,函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.接下来我们说说js当中定义(声明)函数的几种方式,以及每种方式的 ...

  7. JavaScript定义函数的几种方式 1

    上节我们介绍了<JavaScript工作体系中不可或缺的函数>,函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.接下来我们说说js当中定义(声明)函数的几种方式,以及每种方式的 ...

  8. JavaScript高级第2天:定义函数的三种方式、函数的原型链结构、完整原型链、作用域以及作用域链、函数的四种调用模式、闭包、计数器、斐波那契数列优化、三种继承方式

    JavaScript高级第二天 01-定义函数的三种方式 1.函数声明 function:可以先调用再声明,因为预解析(把函数声明.变量声明进行提升) function fn() {//函数体conl ...

  9. [译]使用Webpack提高Vue.js应用程序的4种方式

    [译]使用Webpack提高Vue.js应用程序的4种方式 原文地址 ​ Webpack是开发Vue.js单页应用程序的重要工具.通过管理复杂的构建步骤,您可以更轻松地开发工作流程,并优化应用程序的大 ...

最新文章

  1. PTA 基础编程题目集 6-7 统计某类完全平方数 C语言
  2. 云计算模型 - 1. 概述
  3. jquery效果 窗口弹出案例
  4. Storm精华问答 | 如何处理常见故障?
  5. java lambda sorted_Java8:Lambda表达式增强版Comparator和排序
  6. 如何用PS制作1寸证件照
  7. DLNA的使用-天翼高清电视机顶盒镜像投屏
  8. json对象转map集合(json转map最快的方法)
  9. cadence从原理图导出器件库_一种cadence中原理图替换元器件库的方法与流程
  10. git常用命令(不定时更新)
  11. ERROR 999999: Error executing function. The table name is invalid. No spatial reference exists.
  12. 乒乓球十一分制比赛规则_乒乓球比赛规则
  13. 期货交易结算信息(期货结算系统)
  14. 【Java从零到架构师第③季】【41】SpringBoot-配置文件_YAML_lombok_设置Banner
  15. Windows 7下如何删除OEM隐藏分区
  16. cad相对坐标快捷键_CAD相对坐标和绝对坐标有什么区别?
  17. 数据中台架构体系浅析
  18. “一刀切”严禁散煤,“煤改气”该如何走下去?
  19. 计算机如何连接网络扫描仪,如何添加局域网网络扫描仪
  20. 位运算符之---左移右移运算符(简单易懂)

热门文章

  1. AMBER分子动力学模拟之结果分析(突变型的能量计算,丙氨酸扫描)-- HIV蛋白酶-抑制剂复合物(5)
  2. jQuery获取当前标签的id
  3. 铁威马NAS忘记密码找回方式
  4. 算法练习题——多米诺骨牌问题
  5. 三星霸气垄断 OLED手机面板供不应求
  6. 博弈论学习笔记(二)学会换位思考
  7. 关于EOF(文件结束符)问题的体会
  8. 记录之十进制,二进制,十六进制
  9. web前端技术分享:常用JavaScript框架有哪些?
  10. java 学习笔记-网络编程(八)