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 相关文章推荐
JavaScript入门教程(6) Window窗口对象
Jan 31 Javascript
Iframe thickbox2.0使用的方法
Mar 05 Javascript
jquery下利用jsonp跨域访问实现方法
Jul 29 Javascript
JavaScript 数组详解
Oct 10 Javascript
jquery获取多个checkbox的值异步提交给php
Jul 07 Javascript
相册展示PhotoSwipe.js插件实现
Aug 25 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
Nov 23 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
Dec 17 Javascript
使用jquery给新生的th绑定hover事件的实例
Feb 10 Javascript
bootstrap表单示例代码分享
May 18 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
Sep 27 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中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
js Event对象的5种坐标
2011/09/12 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
js调用css属性写法
2013/09/21 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
用Python的urllib库提交WEB表单
2009/02/24 Python
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
python搜索指定目录的方法
2015/04/29 Python
在Django的视图中使用数据库查询的方法
2015/07/16 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
django的登录注册系统的示例代码
2018/05/14 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
Python for i in range ()用法详解
2020/09/18 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
如何高效率的查找一个月以内的数据
2012/04/15 面试题
幼儿园园长新年寄语2015
2014/12/08 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
颐和园导游词
2015/01/30 职场文书
生产现场禁烟通知
2015/04/23 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers