详解JavaScript自定义函数


Posted in Javascript onJuly 29, 2020

一、定义方法:在Javascript中必须用function关键字

function funcName(arg1,arg2...)
{
statements;
return "变量值"; //返回值可以根据函数的需要
}

函数名是函数自身的一个引用。此种方式创立的函数引用是独立存在的,无法删除。

1、调用函数:函数名(参数列表)。

传递的参数不必与函数定义的参数个数一致,并且可以设定函数参数的默认值。

function example(a,b){
  var a = arguments[0] ? arguments[0] : 1;//设置参数a的默认值为
  var b = arguments[1] ? arguments[1] : 2;//设置参数b的默认值为2
  return a+b;
}
alert(example());  //输出3

其他方法:设置默认参数方式

2、嵌套函数:在JS中,函数的定义中还可以再次定义新的函数

function say()
{
  function add(x,y)
  {
   return (x+y);
  }
  alert(add(2,3));
}
say(); //输出5

内嵌函数add()只能在嵌套它的函数(say())中调用,而不能再外部调用。

3、条件函数:

var b = false;
if(b)
{
	function ex1()
	{
		alert(1);
	}
		ex1();
}
else
{
	function ex2()
	{
		alert(0);
	}
	     ex2();
}

输出0,将b的值改为TRUE,则输出1,不演示。条件函数的花括号不具有范围限制,即可以在花括号外访问函数。

二 、函数的特殊条用方式:网页中的所有方法可以看做全局对象window对象的方法

function add(x,y)
{
	return x+y;
}
//1
alert(window.add(2,3));

//2
alert(window['add'](2,3));

以上结果均是5

三、函数表达式定义函数:匿名函数

1、定义方式:var fucName = function(arg1,arg2,...){statements;}

var add = function (x,y)
{
	return x+y;
}

alert(add(2,3));//输出为5

其中,add是该函数的唯一引用,当add=null,该函数便不能再调用。

2、匿名自执行函数:

(function(x,y)
	{
		alert(x + y) ;
	})(2,3);     //立即自动执行,结果为5

3、匿名函数的用途

2.1  用于一次调用后就丢弃的函数

2.2  向prototype属性附加函数以实现对象方法的定义

四、使用Function定义函数:

在JS中,Function为核心类的一种,而其他方式定义的函数也均作为对象对待,因为在JS中的OOP中,不存在类的概念,这是JS与Java、C#等语言的区别。

var add = new Function(“函数参数”,"函数体"); add为函数名,即函数的一个引用。

var add = new Function('x','y',"return x+y");
alert(add(2,3));

上述的结果为5.

五、闭包函数:当一个函数不位于它所处环境(变量的作用范围)被调用,仍可使用本地变量(脱离了变量的作用范围仍可使用该变量),这是闭包函数的显著特征。

5.1    作为值从函数返回的函数是闭包函数

function B()
{
	var temp="abc";
	function A()
	{
		alert("闭包函数处理本地变量temp = "+temp);
	}
	return A;
}
var a = B();
a();

运行结果:(本地变量是函数内声明的变量)

详解JavaScript自定义函数

5.2   利用变量的作用范围形成闭包函数

var F;
function B()
{
	var temp="abc";
	F=function ()
	{
		alert("利用变量范围形成闭包函数处理本地变量temp = "+temp);
	}
}
B();
F();

运行结果

详解JavaScript自定义函数

以上就是详解JavaScript自定义函数的详细内容,更多关于JavaScript自定义函数的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
js变换显示图片的实例
Apr 16 Javascript
减少访问DOM的次数提升javascript性能
Feb 24 Javascript
javascript将相对路径转绝对路径示例
Mar 14 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
Sep 12 Javascript
javascript原生ajax写法分享
Apr 10 Javascript
jQuery使用经验小技巧(推荐)
May 31 Javascript
js获取新浪天气接口的实现代码
Jun 06 Javascript
Node.js 异步异常的处理与domain模块解析
May 10 Javascript
JS实现图片切换效果
Nov 17 Javascript
微信小程序canvas截取任意形状的实现代码
Jan 13 Javascript
使用vue实现通过变量动态拼接url
Jul 22 Javascript
深入了解JavaScript词法作用域
Jul 29 #Javascript
vue监听dom大小改变案例
Jul 29 #Javascript
VUE实时监听元素距离顶部高度的操作
Jul 29 #Javascript
详解JavaScript作用域 闭包
Jul 29 #Javascript
Angular+ionic实现折叠展开效果的示例代码
Jul 29 #Javascript
Vue 监听元素前后变化值实例
Jul 29 #Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 #Javascript
You might like
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
设定php简写功能的方法
2019/11/28 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
javascript add event remove event
2008/04/07 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
django2笔记之路由path语法的实现
2019/07/17 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
简单的命令查看安装的python版本号
2020/08/28 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
精选干货:Java精选笔试题附答案
2014/01/18 面试题
机械设计制造专业个人求职信
2013/09/25 职场文书
文字自荐书范文
2014/02/10 职场文书
班级德育工作实施方案
2014/02/21 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
2014年招生工作总结
2014/11/26 职场文书