浅谈JS函数定义方式的区别


Posted in Javascript onOctober 30, 2016

关于JS的函数定义方式有以下两种:

(1)典型的函数声明

function slide(arguments){
//...code
}

(2)以函数表达式的形式定义函数

var slide = function(arguments){
//...code
}

虽然上面两种方式逻辑上是等价的,但是还是有点小区别:

区别一:例一中的函数会在代码执行以前被加载到作用域中,而例二则是在代码执行到那一行的时候才会有定 义;

区别二:函数声明会给函数指定一个名字,而函数表达式则是创建一个匿名函数,然后将这个匿名函数赋给一个变量;

看下面例子:

function factorial(num){
if(num<=1){
return 1;
}
else {
return num*arguments.callee(num-1);
}
}
var anotherFactorial = factorial;
factorial = null;
console.log(anotherFactorial);//输出factorial(){},有函数名

若是以函数表达式定义

var factorial = function(num){
//...code
}
//...code
console.log(anotherFactorial);//输出function(){},匿名函数

以上就是小编为大家带来的浅谈JS函数定义方式的区别全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
日期 时间js控件
May 07 Javascript
JQuery 操作select标签实现代码
May 14 Javascript
Mac/Windows下如何安装Node.js
Nov 22 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
Oct 11 Javascript
jquery实现动静态条形统计图
Aug 17 Javascript
BootStrap的JS插件之轮播效果案例详解
May 16 Javascript
jQuery中text() val()和html()的区别实例详解
Jun 28 Javascript
BootStrap 模态框实现刷新网页并关闭功能
Jan 04 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
Feb 23 Javascript
详解如何用webpack4从零开始构建react开发环境
Jan 27 Javascript
npx create-react-app xxx创建项目报错的解决办法
Feb 17 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
Jul 17 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
Oct 30 #Javascript
原生js代码实现图片放大境效果
Oct 30 #Javascript
Angular2 多级注入器详解及实例
Oct 30 #Javascript
Javascript 跨域知识详细介绍
Oct 30 #Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
Oct 30 #Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
Oct 30 #Javascript
js模式化窗口问题![window.dialogArguments]
Oct 30 #Javascript
You might like
文章推荐系统(二)
2006/10/09 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
Seajs的学习笔记
2014/03/04 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
护理专业学生的求职信范文
2013/12/11 职场文书
秋季婚礼证婚词
2014/01/11 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
大学生心理活动总结
2014/07/04 职场文书
护理目标管理责任书
2014/07/25 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
个人先进事迹总结
2015/02/26 职场文书
2016年五一促销广告语
2016/01/28 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis