详解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 相关文章推荐
extjs实现选择多表自定义查询功能 前台部分(ext源码)
Dec 20 Javascript
js如何判断用户是否是用微信浏览器
Jun 05 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
Dec 31 Javascript
js实现可得到不同颜色值的颜色选择器实例
Feb 28 Javascript
web前端开发JQuery常用实例代码片段(50个)
Aug 28 Javascript
基于JavaScript实现熔岩灯效果导航菜单
Jan 04 Javascript
vue引入swiper插件的使用实例
Jul 19 Javascript
浅谈JavaScript作用域和闭包
Sep 18 Javascript
node文件批量重命名的方法示例
Oct 23 Javascript
Vue中div contenteditable 的光标定位方法
Aug 25 Javascript
Vue核心概念Action的总结
Jan 18 Javascript
何时使用Map来代替普通的JS对象
Apr 29 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 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
2020/02/23 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python zip()函数用法实例分析
2018/03/17 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
python dict如何定义
2020/09/02 Python
Django celery异步任务实现代码示例
2020/11/26 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
百度软件工程师职位
2013/02/14 面试题
建筑工程专业学生的自我评价
2013/12/25 职场文书
工作表现自我评价
2014/02/08 职场文书
应届大学生自荐书
2014/06/17 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android