JavaScript的function函数详细介绍


Posted in Javascript onNovember 20, 2021

通过函数来封装任意多条语句,而且可以在任何地方、任何时间调用执行。

而我们的JavaScript脚本语言比较特殊,相对于C语言,它的参数是不需要数据类型加持的。返回值return,我就不过多描述,他是和 C语言通的,如果没写他就会自动返回undefined

function fun(x,y){
            
        }
//写成这样就可以声明一个函数

以我的理解他就是以对象的形式来传入参数,通过对象的各项属性值(引用类型的值),来作为我的实际参数,

例如我有以下做法:

function fun(x, y) {
          //  alert("x的值是" + x.value);
            alert("x的值是" + x);
        }

当我是这种操作的时候,他的弹出框报错是:x的值是[object HTMLInputElement],以对象的形式传入的它是不符合我的逻辑设计的,应该是下面的这种做法。

返回我的x的value值。

function fun(x, y) {
            alert("x的值是" + x.value);
          //  alert("x的值是" + x);
        }
  • 所以当我设计一个简单的,两个整数数字相乘,返回值。
  • 这里就要特别记忆一下<form></form> 要把输入的这一段html代码写在这个标签里。不然你将会找好半天错误(别问我怎么知道的,说多了都是泪)

JavaScript的function函数详细介绍

咋们是深度理解,先别急,再看看这段代码:

JavaScript的function函数详细介绍

是不是着这里有着不一样的发现,照以前的这个函数写法,铁定是在乱写,是不是?但是他在这里是能运行的,笑死(开心的笑)

JavaScript的function函数详细介绍

也就是说ECMAScript函数不介意传进来多少个参数,也不在乎你传进来个神马参数,解析器永远都不会有任何怨言。(太爽了,老师再也不用担心我不会传参了),那他是如何解决这个“世纪难题 ”的呢,其实在每个函数体内,都有一个arguments对象来访问这个参数数组,从而获取传递给数组的每一个参数。

道友试试给下面代码fun函数用双引号fun(“勇敢”,“牛牛”),会发生什么现象,解释一下就是上引号就近配对,呜呜呜呜

哎,这和咱们学的java函数重载是不是有点那味道了呀,其实JavaScript是没有重载滴。

再看两个例子:

JavaScript的function函数详细介绍

function fun() {
    if (arguments.length == 1) {
        alert(arguments[0] + 10);

    }
    if (arguments.length == 2) {
        alert(arguments[0] + arguments[1]);
    }
}
fun(10);//20
fun(10,20);//30

也只能通过传入参数的个数上,实现适当的功能,并不是实现真正意义上的重载,虽然特性算不上完美的重载,但是也足够弥补JavaScript的这一遗憾。arguments也可以与参数与一起使用,

如下:

function fun(num1, num2) {
    if (arguments.length == 1) {
        alert(num1 + 10);

    }
    if (arguments.length == 2) {
        alert(arguments[0] + num2);
    }

}
fun(10);//20
fun(10, 20);//30

那么就有宝问了,参数反正都是赋值在arguments对象中,那么我直接修改 arguments[i] 值是否可行呢?

  • 那有意思的是,关于arguments行为,它的值永远与对应的命名参数值保持同步,他会修改当下函数内的值!!!,也就是说参数与arguments[i]内存空间时独立的,但是值会同步。
function fun(num1, num2) {
    arguments[1] = 10;
    alert(arguments[0] + num2);
}

</script>
<form>
 <br><input type="button" onclick="fun(10,20)" value="点击">
</form>

他弹出框的值就是20;可见是修改arguments[i]值,会自动反应到这个参数当中,要是没有这个参数,重写这个参数值,将会导致语法错误。代码不会执行。如果有两个相同的函数名他不会报错,但是该名字只属于后定义的函数。

总结:

  • JavaScript函数与其他语言函数有很多细节之处不同。
  • 无需非得要返回值,因为在任何时候他都可以返回任何值
  • arguments.length长度由传入参数的个数确定,而不是定义时函数的命名数决定。
  • 是没有重载的,即参数是可以0个或者多个的的数组形式参与的,并且通过arguments对象来访问这些参数。

到此这篇关于JavaScriptfunction函数详细介绍的文章就介绍到这了,更多相关JavaScript的function函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jQuery DOM操作小结与实例
Jan 07 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
Aug 03 Javascript
微信JS接口汇总及使用详解
Jan 09 Javascript
jQuery+Ajax实现无刷新分页
Oct 30 Javascript
jQuery使用cookie与json简单实现购物车功能
Apr 15 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 Javascript
vuejs2.0子组件改变父组件的数据实例
May 10 Javascript
vue搜索和vue模糊搜索代码实例
May 07 Javascript
layui实现下拉框三级联动
Jul 26 Javascript
jQuery实现轮播图效果
Nov 26 jQuery
原生JavaScript实现轮播图
Jan 10 Javascript
JavaScript文档对象模型DOM
Nov 20 #Javascript
四十九个javascript小知识实用技巧
Nov 20 #Javascript
js不常见操作运算符总结
Nov 20 #Javascript
javascript的setTimeout()使用方法总结
Nov 20 #Javascript
JavaScript异步操作中串行和并行
Nov 20 #Javascript
vue中 this.$set的使用详解
如何用vue实现网页截图你知道吗
You might like
PHP 第二节 数据类型之数值型
2012/04/28 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
起点页面传值js,有空研究学习下
2010/01/25 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
详解Python当中的字符串和编码
2015/04/25 Python
python实现list由于numpy array的转换
2018/04/04 Python
python实现简单颜色识别程序
2020/02/19 Python
python基于opencv 实现图像时钟
2021/01/04 Python
韩国现代百货官网:Hmall
2018/03/21 全球购物
error和exception有什么区别
2012/10/02 面试题
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
个人委托函范文
2015/01/29 职场文书
干部考核工作总结
2015/08/12 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
golang中的并发和并行
2021/05/08 Golang