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 HashTable
Jan 22 Javascript
js表数据排序 sort table data
Feb 18 Javascript
javascript基础知识大集锦(二) 推荐收藏
Jan 13 Javascript
一行代码告别document.getElementById
Jun 01 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
Jun 05 Javascript
JavaScript设置表单上传时文件个数的方法
Aug 11 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
Node.js利用console输出日志文件的方法示例
Apr 27 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
Sep 25 Javascript
js实现的订阅发布者模式简单示例
Mar 14 Javascript
JS如何监听div的resize事件详解
Dec 03 Javascript
vue路由实现登录拦截
Mar 24 Vue.js
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
for循环连续求和、九九乘法表代码
2012/02/20 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
php查询whois信息的方法
2015/06/08 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
JavaScript 高级语法介绍
2009/06/15 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
python如何把嵌套列表转变成普通列表
2018/03/20 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
基于python实现百度翻译功能
2019/05/09 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
python如何绘制疫情图
2020/09/16 Python
教师学期个人总结
2015/02/11 职场文书
2015年环卫工作总结
2015/04/28 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏