浅析javascript中函数声明和函数表达式的区别


Posted in Javascript onFebruary 15, 2015

javascript中声明函数的方法有两种:函数声明式和函数表达式.

区别如下:

1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的.

2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,而函数表达式的函数只能在声明之后调用.

3).以函数声明的方法定义的函数并不是真正的声明,它们仅仅可以出现在全局中,或者嵌套在其他的函数中,但是它们不能出现在循环,条件或者try/catch/finally中,而

    函数表达式可以在任何地方声明.

下面分别用两种方法定义函数:

 //函数声明式

 function greeting(){

       console.log("hello world");  

 }

 //函数表达式

 var greeting = function(){

     console.log("hello world"); 

 }

下面一个有趣的javascript:

 function f() { console.log('I am outside!'); }

 (function () {

   if(false) {

     // 重复声明一次函数f

     function f() { console.log('I am inside!'); }

   }

   f();

 }());

会输出什么呢?第一反应应该是"I am outside"吧.  结果在chrome中输出"I am inside",IE11直接报错,firefox低一点的版本输出"I am outside"...

chrome输出的结果很明确的反应了用函数声明式声明的函数的特点--函数在声明之前就可以调用.

IE报错显示缺少对象,因为函数声明在了条件里,违背了函数声明式的原则.

函数表达式的作用域:

如果函数表达式声明的函数有函数名,那么这个函数名就相当于这个函数的一个局部变量,只能在函数内部调用,举个栗子:

 var f = function fact(x) { 

                 if (x <= 1) 

                     return 1;

                 else 

                     return x*fact(x-1);

                 };

                 alert(fact());   // Uncaught ReferenceError: fact is not defined

fact()在函数内部可以调用,在函数外部调用就会报错:fact未定义

以上就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 Javascript
jquery中$(#form :input)与$(#form input)的区别
Aug 18 Javascript
node.js中的fs.writeFile方法使用说明
Dec 14 Javascript
简介JavaScript中的getSeconds()方法的使用
Jun 10 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
Dec 07 Javascript
功能强大的Bootstrap使用手册(一)
Aug 02 Javascript
javascript 解决浏览器不支持的问题
Sep 24 Javascript
深入研究React中setState源码
Nov 17 Javascript
vue组件发布到npm简单步骤
Nov 30 Javascript
vue2中引用及使用 better-scroll的方法详解
Nov 15 Javascript
ES6 如何改变JS内置行为的代理与反射
Feb 11 Javascript
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 Javascript
不同编码的页面表单数据乱码问题解决方法
Feb 15 #Javascript
浅谈javascript中this在事件中的应用
Feb 15 #Javascript
javascript使用正则表达式实现去掉空格之后的字符
Feb 15 #Javascript
分享一个自己写的简单的javascript分页组件
Feb 15 #Javascript
Linux下编译安装php libevent扩展实例
Feb 14 #Javascript
jQuery中extend函数详解
Feb 13 #Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 #Javascript
You might like
使用php+xslt在windows平台上
2006/10/09 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
Vue 样式绑定的实现方法
2019/01/15 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
python实现图片九宫格分割
2021/03/07 Python
django实现用户注册实例讲解
2019/10/30 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
python speech模块的使用方法
2020/09/09 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
2014年基层党组织公开承诺书
2014/03/29 职场文书
银行求职自荐信
2014/06/30 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
python小型的音频操作库mp3Play
2022/04/24 Python
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis