详解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字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
Oct 17 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
Sep 27 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
Oct 19 Javascript
Jquery获取第一个子元素简单实例
Jun 02 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
基于JavaScript实现飘落星星特效
Aug 10 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
Apr 18 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
May 12 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
Jul 13 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
Sep 16 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
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
js下写一个事件队列操作函数
2010/07/19 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
js模块加载方式浅析
2017/08/12 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
Python获取服务器信息的最简单实现方法
2015/03/05 Python
Python读取图片属性信息的实现方法
2016/09/11 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
python实现两张图片的像素融合
2019/02/23 Python
python制作填词游戏步骤详解
2019/05/05 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
python中如何打包用户自定义模块
2020/09/23 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
写给女生的道歉信
2014/01/08 职场文书
家长会邀请书
2014/01/25 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
分居协议书范本
2014/11/03 职场文书
党校毕业个人总结
2015/02/28 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
源码安装apache脚本部署过程详解
2022/09/23 Servers