详解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 相关文章推荐
CLASS_CONFUSION JS混淆 全源码
Dec 12 Javascript
jquery scroll()区分横向纵向滚动条的方法
Apr 04 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
Jan 18 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
Apr 26 Javascript
jQuery判断checkbox选中状态
May 12 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
May 26 Javascript
js封装tab标签页实例分享
Dec 19 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
May 02 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 Javascript
vue-cli中的babel配置文件.babelrc实例详解
Feb 22 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
May 06 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
深入了解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实现简单汉字验证码
2015/07/28 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python格式化压缩后的JS文件的方法
2015/03/05 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
提升python处理速度原理及方法实例
2019/12/25 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
python文件和文件夹复制函数
2020/02/07 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
翻译专业应届生求职信
2013/11/23 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
一年级学生评语大全
2014/04/21 职场文书
继承权公证书范本
2015/01/23 职场文书
后勤个人工作总结
2015/02/28 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript