js中的函数声明和函数表达式的区别
一、声明与表达式的格式
1.1 声明式的格式:
函数声明: function 函数名(){}
例子:
function aaa(){} // 函数声明
1.2 表达式的格式:
函数表达式: function 函数名(可写可不写)(){} : 分别代表:命名函数表达式,匿名函数表达式
例子:
var a = function aaa(){} // 函数表达式
var a = function(){} // 函数表达式
(function aaa(){}) // 函数表达式
~function aaa(){}
-function aaa(){}
+function aaa(){}
!function aaa(){}
二、区别
2.1 函数表达式可以直接在后面加括号执行,而函数声明不可以。
也就是说,函数表达式可以通过直接加()来执行这个函数
如:
function aaa(){alert(1)}(); // 这是不可以的
但是,如果是函数表达式
var a = function aaa(){alert(1)}(); // 可以的
~function aaa(){alert(2)}();
2.2 函数表达式可以被提前解析出来
看下面例子:这两个例子中,执行结果的不一样,可以看出函数表达式是提前被解析出来的。
如果需要通过判断来调用不同函数(函数名相同),最好使用函数表达式
if(true){
function aaa(){
alert(1);
}
}else{
function aaa(){
alert(2);
}
}
aaa(); //2
if(true){
var a = function aaa(){
alert(1);
}
}else{
var a = function aaa(){
alert(2);
}
}
a(); //1
2.3 命名函数表达式跟匿名函数表达式的区别
看例子:
var a = function aaa(){
alert(1);
alert(typeof aaa); // 内部可以找到
}
a();
aaa(); // 外部找不到
js中的函数声明和函数表达式的区别的更多相关文章
- Js中有关变量声明和函数声明提升的问题
在ECMAScript5中没有块级作用域一说,只有函数作用域和全局作用域,在其中声明的变量和函数和其他语言的展现形式不同,在某些情况下不一定需要先定义后使用,函数和变量的使用可以在其声明之前,这到底是 ...
- JS中函数声明与函数表达式的不同
Js中的函数声明是指下面的形式: function functionName(){ } 这样的方式来声明一个函数,而函数表达式则是类似表达式那样来声明一个函数,如 var functionName ...
- JS中函数声明与函数表达式的异同
相同点 注:函数声明和函数表达式的相同点包括但不限于以下几点 函数是一个值,所以和其他值一样,函数也可以进行被输出.被赋值.作为参数传给其他函数等相关操作,不管函数是以什么方式被定义的,当然和其他值的 ...
- JS中的函数声明和函数表达式的区别,即function(){}和var function(){},以及变量提升、作用域和作用域链
一.前言 Uncaught TypeError: ... is not a function function max(){}表示函数声明,可以放在代码的任何位置,也可以在任何地方成功调用: var ...
- JS的一些总结(函数声明和函数表达式的区别,函数中的this指向的问题,函数不同的调用方式,函数也是对象,数组中的函数调用)
一.函数声明和函数表达式的区别: 函数声明放在if——else语句中,在IE8中会出现问题 函数表达式则不会 <script> if(true){ function f1(){ conso ...
- Js中函数声明和函数表达式的区别
先看以下几段烧脑的代码: f();//=>? var f = function () { console.log("var"); } function f() { conso ...
- js函数声明和函数表达式的区别
Javascript Function无处不在,而且功能强大!通过Javascript函数可以让JS具有面向对象的一些特征,实现封装.继承等,也可以让代码得到复用.但事物都有两面性,Javascrip ...
- 转载 js函数声明和函数表达式
在js中函数有两种表达方式.1 函数声明 2 函数表达式 函数声明 function sayname(){ alert("li lei"); } 函数表达式 var sayname ...
- JavaScript(js)函数声明与函数表达式的区别
在JavaScript中,函数是经常用到的,在实际开发的时候,我想很多人都没有太在意函数的声明与函数表达式的区别,但是呢,这种细节的东西对于学好js是非常重要的. 函数声明与函数表达式用代码写出来是这 ...
随机推荐
- XAMPP安装和配置
一.XAMPP安装: 下载地址:https://www.apachefriends.org/zh_cn/index.html 二.修改MySQL数据库 1.更改Apache中数据库端口号 保存后重新启 ...
- 修改PhpStorm创建Php类文件时头部作者
原文链接:https://segmentfault.com/a/1190000015617093 首先打开phpstorm后找到Setting/Editor/Inspections/PHP/File ...
- 85、使用TFLearn实现iris数据集的分类
''' Created on 2017年5月21日 @author: weizhen ''' #Tensorflow的另外一个高层封装TFLearn(集成在tf.contrib.learn里)对训练T ...
- Python错误 importModuleNotFoundError: No module named 'Crypto'
0x00经过 今天在python中导入模块的用 from Crypto.Cipher import AES 的时候出现了找不到模块的错误. 百度了很长时间有很多解决方法,但是因不同的环境不同的 ...
- Chosen 的 optgroup 第一级单击的时候选择二级的全部
相关环境 及 版本 Chosen (v1.6.2) https://harvesthq.github.io/chosen/ jQuery (v1.8.3) 官网 http://jquery.com/ ...
- The request with exception: The SSL connection could not be established, see inner exception. requestId 解决方案
DOTNET CORE 部署 Centos7 抛出异常 环境变量如下: .NET Core SDK (reflecting any global.json): Version: 2.2.401 Com ...
- jquery中attr方法和prop方法的区别
关于checked的属性,最重要的概念就是你要记住,它跟checked的状态值是毫无关系的,设置checked = "checked"或者checked = "true& ...
- Centos7下实现docker + wordpress 安装
一.Docker CE 安装 检查是否安装过旧的版本 如果系统安装旧版本Docker需要先卸载,命令如下: [root@localhost Wordpresss]sudo yum remove doc ...
- Django框架(二十一)—— Django rest_framework-权限组件
目录 Django rest_framework-权限组件 一.权限组件的使用 1.使用语法 2.全局使用.局部使用.局部禁用权限 二.源码分析 1.Book中没有as_view 2.APIView的 ...
- docker内的应用访问宿主机上的mysql和Redis
背景:宿主机部署MySQL.Redis,docker内部署tomcat.jdk 需求:tomcat内的应用访问宿主机的MySQL和Redis 方法: 一.连接地址切记不能用localhost和 ...