js声明函数的几种方式
函数表达式(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开头进行声明,并且含有函数名,一定是函数声明。
内在的,
- 函数提升:就是指允许先调用函数,再进行声明,因为声明会自动提升至调用前面执行。函数声明,会将整个函数进行提升.而函数表达式则不会提升,它是在引擎运行时进行赋值,且要等到表达式赋值完成后才能调用。
- 函数表达式是可以没有函数名的,如果有,它的函数名也只存在于自身的作用域,var f = function fun(){console.log(fun)}其他地方是没有的.这也避免了全局污染,也方便递归.
js声明函数的几种方式相关推荐
- js声明变量的三种方式
JS 声明变量的三种方式 (1)使用变量步骤:a.声明-->b.赋值-->3.调用 正确用法: <script type="text/javascript"> ...
- JS定义函数的两种方式:函数声明和函数表达式
函数声明 关于函数声明的方式,它的一个重要的特性就是函数声明提升(function declaration hoisting),意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它 ...
- php变量和js变量的区别吗,JS声明变量的3种方式和区别
JavaScript 是弱类型语言,可以不需要声明变量而直接使用.这样虽然简单但不易发现变量名方面的错误,所以不建议这样做.通常的做法是在使用 JavaScript 变量前先声明变量.目前,JavaS ...
- JS 声明全局变量的三种方式
JS中声明全局变量主要分为显式声明或者隐式声明下面分别介绍. 声明方式一: 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量 ...
- js setTimeout 传递带参数的函数的2种方式
js setTimeout 传递带参数的函数的2种方式 Created by Marydon on 2018年9月14日 1.准备工作 function sayYourName(param) {ale ...
- JavaScript定义函数的几种方式
上节我们介绍了<JavaScript工作体系中不可或缺的函数>,函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.接下来我们说说js当中定义(声明)函数的几种方式,以及每种方式的 ...
- JavaScript定义函数的几种方式 1
上节我们介绍了<JavaScript工作体系中不可或缺的函数>,函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.接下来我们说说js当中定义(声明)函数的几种方式,以及每种方式的 ...
- JavaScript高级第2天:定义函数的三种方式、函数的原型链结构、完整原型链、作用域以及作用域链、函数的四种调用模式、闭包、计数器、斐波那契数列优化、三种继承方式
JavaScript高级第二天 01-定义函数的三种方式 1.函数声明 function:可以先调用再声明,因为预解析(把函数声明.变量声明进行提升) function fn() {//函数体conl ...
- [译]使用Webpack提高Vue.js应用程序的4种方式
[译]使用Webpack提高Vue.js应用程序的4种方式 原文地址 Webpack是开发Vue.js单页应用程序的重要工具.通过管理复杂的构建步骤,您可以更轻松地开发工作流程,并优化应用程序的大 ...
最新文章
- PTA 基础编程题目集 6-7 统计某类完全平方数 C语言
- 云计算模型 - 1. 概述
- jquery效果 窗口弹出案例
- Storm精华问答 | 如何处理常见故障?
- java lambda sorted_Java8:Lambda表达式增强版Comparator和排序
- 如何用PS制作1寸证件照
- DLNA的使用-天翼高清电视机顶盒镜像投屏
- json对象转map集合(json转map最快的方法)
- cadence从原理图导出器件库_一种cadence中原理图替换元器件库的方法与流程
- git常用命令(不定时更新)
- ERROR 999999: Error executing function. The table name is invalid. No spatial reference exists.
- 乒乓球十一分制比赛规则_乒乓球比赛规则
- 期货交易结算信息(期货结算系统)
- 【Java从零到架构师第③季】【41】SpringBoot-配置文件_YAML_lombok_设置Banner
- Windows 7下如何删除OEM隐藏分区
- cad相对坐标快捷键_CAD相对坐标和绝对坐标有什么区别?
- 数据中台架构体系浅析
- “一刀切”严禁散煤,“煤改气”该如何走下去?
- 计算机如何连接网络扫描仪,如何添加局域网网络扫描仪
- 位运算符之---左移右移运算符(简单易懂)