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 相关文章推荐
EXTjs4.0的store的findRecord的BUG演示代码
Jun 08 Javascript
window.showModalDialog()返回值的学习心得总结
Jan 07 Javascript
node.js中的Socket.IO使用实例
Nov 04 Javascript
JavaScript函数模式详解
Nov 07 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
webpack学习笔记之优化缓存、合并、懒加载
Aug 24 Javascript
Vue.js进阶知识点总结
Apr 01 Javascript
node微信开发之获取access_token+自定义菜单
Mar 17 Javascript
JS实现倒序输出的几种常用方法示例
Apr 13 Javascript
jQuery层叠选择器用法实例分析
Jun 28 jQuery
es6中比较有用的7个技巧小结
Jul 12 Javascript
js定时器出现第一次延迟的原因及解决方法
Jan 04 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中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
JavaScript this调用规则说明
2010/03/08 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
angular分页指令操作
2017/01/09 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
Django 实现下载文件功能的示例
2018/03/06 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
想学python 这5本书籍你必看!
2018/12/11 Python
python应用文件读取与登录注册功能
2019/09/23 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
python实现图像外边界跟踪操作
2020/07/13 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
酒店秘书求职信范文
2014/02/17 职场文书
办公室规章制度范本
2015/08/04 职场文书