Javascript基础知识(三):函数参数(传参)

article/2025/4/20 19:56:25

1.函数参数分类及使用

上一篇博客已经讲到函数参数有实参和形参两种。

这里写图片描述
函数参数使用时需要注意以下几点:

1.如果形参有两个赋值,而实参只给了一个值,那么就要把这个值赋予第一个形参.第二个形参没有赋值。
示例:

<script>Function fn(a,b){Console.log(a+b);}Fn(4);
</script>

有上述代码分析可知: a = 4 , 数据类型是num, b 没有赋值,数据类型是undefined。
所以一个num和undefined 相加,控制台输出 NaN(Not a Number)。

2.如果实参赋值个数多于形参赋值个数,那么只需按顺序一一对应赋值,不用管多出来得实参。

<script>Function fn(a,b){Console.log(a+b);}Fn(4,5,7);
</script>

a=4; b=5;
输出结果是9。
JS语言中形参和实参个数可以不同,但是在其他计算机语言中,形参和实参一定要匹配,否则会报错。尽管不报错,在写程序时,尽量让实参和形参匹配。

2.arguments对象

  • Javascript在创建函数的同时,会在函数内部创建一个arguments对象实例,Arguments用来存储函数传送过过来实参。
  • arguments对象只有函数开始时才可用。函数的 arguments 对象并不是一个数组,访问单个参数的方式与访问数组元素的方式相同。
  • arguments对象的长度是由实参个数而不是形参个数决定的。
    示例:
<script>function fn(a,b) {//设定形参console.log(fn.length);//获取形参的长度,length属性可返回字符串中的字符数目。console.log(arguments.length);//获取实参的长度,因为Arguments用来存储函数传送过过来实参if (fn.length == arguments.length){//判断形参长度和实参长度是否相同console.log(a+b);//如果if条件语句成立,输出实参之和。}else{//如果if条件语句不成立,在控制台报错。console.error(" 对不起,您的实参和形参不匹配,正确的个数应该是"+ fn.length);}}fn(1,2)//给出实参
</script>

fn(1,2)实参个数和形参个数相等,控制台输出结果:

这里写图片描述

如果fn(1,2,7),那么实参和形参个数不相等,所以执行else语句。控制台结果为:
这里写图片描述

3.函数传参控制盒子

1.运用js使盒子显示或消失

页面中有三个隐藏的盒子,和三个按钮,需要做到的效果是:当点击按钮时,与之对应的盒子就会显示出来。
分析:
事件源;按钮
事件:onclick
事件处理程序;显示盒子
代码:

<style>div{width: 200px;height: 200px;background-color: pink;display: none;/*隐藏盒子*/margin: 20px;}
</style>
<script>function fn(obj) {
//           这个函数负责接收传递的函数,当点击button1,obj= hezi1;当点击button2,obj = hezi2.var  hezi = document.getElementById(obj);
//         obj  是变量,所以不要加双引号。hezi.style.display = "block"//display = "block"表示显示盒子}</script><button onclick="fn('hezi1');">显示第1个盒子</button> 
<!--内嵌式:外双内单,负责传递出函数内嵌式:外双内单,负责传递出函数。当点击按钮,调用fn(obj)函数,并把盒子1的类名作为实参传到函数中--><button onclick="fn('hezi2');">显示第2个盒子</button><button onclick="fn('hezi3');">显示第3个盒子</button><div id="hezi1">1</div><div id="hezi2">2</div><div id="hezi3">3</div>

这个案例传参过程:首先点击按钮事件,把对应盒子的ID传给fn函数作实参,fn函数执行 var hezi = document.getElementById(obj);语句,提取出来盒子的ID,并修改样式。

2.制作淘宝展示图片轮换效果

效果:
这里写图片描述
当鼠标经过下面的小图片使,上面的大图片也跟着改变。
分析:
事件源:小图片
事件:鼠标经过
事件处理程序:大盒子的背景 图片改变。
首先分析,这个事件中又几个变量。经过的小图片变,大盒子的背景图片变。所以两个变量分别为小图片的ID和大图片的背景。
知道有几个变量之后,就可以以这两个变量为形参开始封装函数了。

 function fn(liid, bg) {//事件源是小图片,首先要获取的是小图片的IDvar obj = document.getElementById(liid);//获取ID后,开始写事件处理过程:事件源.事件=function(){}obj.onmouseover = function(){改变对象的ID.style.backgroundImage = bg//bg是变量由实参控制}}

函数封装好了,只要在实际运用中调用就可以了。
附上需要的图片:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
HTML代码:

<div id="box"><ul><li id="li01"><img src="images/01.jpg" alt=""/></li><li id="li02"><img src="images/02.jpg" alt=""/></li><li id="li03"><img src="images/03.jpg" alt=""/></li><li id="li04"><img src="images/04.jpg" alt=""/></li><li id="li05"><img src="images/05.jpg" alt=""/></li></ul>
</div>

CSS代码:

<style>*{margin:0;padding:0;}ul{list-style:none;}#box {height: 70px;width: 360px;padding-top: 360px;border:1px solid #ccc;margin:100px auto;overflow: hidden;background: url(images/01big.jpg) no-repeat;}#box ul{overflow: hidden;border-top:1px solid #ccc;}#box li {float: left;}
</style>

JS代码:

<script>window.onload = function() {
//     记得要引入函数var box = document.getElementById("box");
//     大盒子从始至终不变化,所以可以放到循环外面function fn(liid, bg) {
//         封装函数,用来接收传来的参数。首先确定有几个变量,变量之间用逗号隔开,不加双引号。var obj = document.getElementById(liid);
//         获取变量,执行以下函数obj.onmouseover = function () {box.style.backgroundImage = bg;
//             在执行的函数中也有一个变量,不加双引号。}}
//下面是调用函数,给出了实参,参数不是变量,需要用双引号引起来。fn("li01", "url(images/01big.jpg)");fn("li02", "url(images/02big.jpg)");fn("li03", "url(images/03big.jpg)");fn("li04", "url(images/04big.jpg)");fn("li05", "url(images/05big.jpg)");}
</script>

谢谢大家!


http://chatgpt.dhexx.cn/article/lV5Za1WB.shtml

相关文章

js 基础-函数传参

函数中的参数传递是所有编程语言的中的基础内容。本文是介绍了js中保存基本数据类型和引用数据类型的两种方式以及在函数传参的本质。 1 简介 本文介绍了js中两种不同数据类型的数据的保存问题&#xff0c;以及赋值操作的本质&#xff0c;最后指出函数传参就是赋值操作&#…

php获取qq音乐的api类,利用QQ音乐api集成的php歌曲搜索

获取最新音乐 url&#xff1a; https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?uin0&notice0&platformh5&needNewCode1&tpl3&pagedetail&typetop&topid27 获取推荐歌曲 url&#xff1a; https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.…

Vue之跨域调用网易云音乐API及QQ音乐API

今天在做VUE项目的时候&#xff0c;发现调用QQ音乐轮播图的API一直失败&#xff0c;timeout真的不是我网络的问题&#xff0c;在客厅对着路由器调了一整天都是报错&#xff0c;我还以为是API失效了&#xff0c;但其实没有........晚上突然又可以获取了 但总不能不写轮播图吧&am…

MusicBee 歌词插件(基于QQ音乐API)

MusicBee 歌词插件&#xff08;基于QQ音乐API&#xff09; MusicBee 是一个很棒的免费音乐管理、播放软件&#xff0c;支持通过插件来扩展功能。然而 MusicBee 在初始情况下仅对外国的几个歌词数据库进行检索&#xff0c;得到的结果一般是不带时间轴的纯文本歌词&#xff0c;并…

php开发个人音乐站 QQ音乐api

做位一名优秀的程序员 工作时候戴耳机是不可避免的 然后好听的歌又需要会员 下面小编就给大家简绍我自己听歌的神器 话不多说 开撸&#xff01; 一&#xff0c;要想获得对应的歌曲肯定要先获得歌曲的id,图片id等 下面主要讲解如何获取歌曲播放id&#xff1b; 1.搜索歌曲API&a…

python调用QQ音乐API

python调用QQ音乐API 1. 音乐搜索接口、其他接口 2. 获取token 3. 拼接播放地址 先上一份代码&#xff1a; import requests import pprint import json from selenium import webdriver# 音乐搜索接口p, n, w 1, 5, 碰 url_1 https://c.y.qq.com/soso/fcgi-bin/client_…

php计算QQ音乐guid,QQ音乐API分析2017

官网提供API 说明&#xff1a;此API主要针对移动端直接调用QQ音乐API用&#xff0c;API只能在QQAPP内执行&#xff0c;上线时间尚短。 http://y.qq.com/m/api/api.html 自己分析的API 说明&#xff1a; 根据官网https://y.qq.com/分析的API&#xff0c;经过测试&#xff0c;可以…

java qq音乐接口 api,GitHub - yan123zi/qqMusicApi: qq音乐Api接口

qq音乐 API qq音乐 Node.js API service QQ音乐API koa2 版本, 通过Web网页版请求QQ音乐接口数据, 有问题请提 issue 当前代码仅共学习&#xff0c;不可做商业用途 API结构图 环境要求 因为本项目采用的是koa2, 所以请确保你的node版本是7.6.0 node -v &#x1f4e6; 安装 git…

QQ音乐API整理

最近准备用vue做个音乐播放器&#xff0c;网上找了找音乐API&#xff0c;看了一圈&#xff0c;还是QQ音乐最合适&#xff0c;这里做个整理 这篇博客已经过时了&#xff0c;下面的不用看了。。。。 歌曲搜索 接口地址 var num 3,name 王菲,urlString http://s.music.qq.co…

网易云音乐api、QQ音乐api、黑马电商api、小说api、漫画api接口

网易云音乐接口文档 基础访问地址&#xff08;api的跟地址&#xff09;&#xff1a;https://autumnfish.cn/ 接口文档地址&#xff1a;https://binaryify.github.io/NeteaseCloudMusicApi/ QQ音乐接口文档 基础访问地址&#xff08;api的跟地址&#xff09;&#xff1a;http…

QQ音乐API

** QQ音乐API ** 效果图: URL: 通过这条接口查找到这10条歌曲每一条的Songmid https://c.y.qq.com/soso/fcgi-bin/client_search_cp?aggr=1&cr=1&flag_qc=0&p=1&n=10&w=邓紫棋; 这条链接获取到QQ音乐当前使用的地址(QQ音乐不定期换地址,本人跳过这…

2019最新版QQ音乐api调用(原创)

下载QQ音乐任意歌曲方法&#xff1a; 1.首先在QQ音乐任意播放页面 2.进入开发者模式按F12即可 3.选择network&#xff0c;按ctrlR进行筛选多媒体文件 4.优先选择大小排序右击最大的多媒体文件出来快捷菜单&#xff0c;选择如下图的选项即可进入歌曲播放页面 5.如下链接就是播放…

QQ音乐api 最新版,亲测可用

关注公众号&#xff0c;每天都能领红包 最近这个api出现了403问题&#xff0c;已经找到原因了 原因是 歌曲不能再以第一参数当id了 要以倒数第5个 如以上的例子 002qU5aY3Qu24y当id&#xff0c;而且前面要加C100&#xff0c;完整的就是 http://ws.stream.qqmusic.qq.com/C1000…

Java版本中最好用的网易云音乐、qq音乐api请求工具,你还在忙于如何使用java调音乐api?来看下这里的实现

去年闲着没事干&#xff0c;就封装了下面QQ和Netease音乐的 api &#xff0c;目的就是通过java可以更便捷的调用&#xff0c;网易云音乐或者qq音乐的api&#xff0c;另外每个接口我都加了注释&#xff0c;对于不懂的参数&#xff0c;通过接口上的注释直接可以查看&#xff0c;不…

QQ音乐API爬取全过程

QQ音乐API爬取全过程 1. 前序&#xff1a; 在以前的QQ音乐的API爬取中&#xff0c;是非常容易的&#xff0c;采用的是jsonp的请求方式&#xff0c;但现在QQ音乐请求已经全部改成XHR的ajax的方式发送请求&#xff0c;所以要爬取QQ音乐的数据就需要破解QQ音乐发送请求的参数。 …

QQ音乐API分析之-加密参数分析(sign计算)

QQ音乐API加密参数分析 1、背景2、QQ音乐sign计算3、Java代码实现4、总结 1、背景 不知道什么时候开始&#xff0c;各家音乐APP都开始对API进行加密&#xff0c;最近一段时间对六大音乐平台的加密算法进行了研究&#xff0c;逆向了网页端、安卓端等等&#xff0c;已经掌握了各…

微信小程序使用QQ音乐API完整实例

微信小程序使用QQ音乐API完整实例 一、QQ音乐常用API接口&#xff1a;1.1、音乐搜索接口&#xff1a;1.2、最新音乐排行榜top1001.3. 随机推荐 二、请求数据格式&#xff08;以搜索为例&#xff09;三、播放链接&#xff08;重点&#xff09;3.1、获取歌曲信息3.2 获取token3.3…

音乐播放器之QQ音乐最新api,亲测可用

大家好&#xff0c;前段时间重写了自己的音乐播放器&#xff0c;源码放在github上&#xff0c;源码地址和项目地址下面都有&#xff0c;如果喜欢记得star一下哈。 由于之前给大家分享的api虽然可以用&#xff0c;但是版本太旧了&#xff0c;很多也没有了歌词&#xff0c;今天博…

步数精灵v3.0运动安卓版

软件介绍: 一键修改微信运动、支付宝运动的步数&#xff0c;让你在家足不出户也能走几万步&#xff0c;天天霸占好友排行榜首位&#xff01; 软件预览图&#xff1a; 软件版本号&#xff1a;3.0 软件是否收费&#xff1a;免费软件/共享软件 运行环境&#xff1a;安卓 软件…

艾出行广告精灵挂机源码+对接码支付即时到账+充值系统+推广下级系统+封装app

简介&#xff1a; 安装说明&#xff1a;请使用win系统 apache php5.6 mysql5.6 进行安装。 1、上传到网站根目录 2、用phpMyadmin导入数据库文件.sql 3、修改数据库链接文件 /APP/Conf/config.php &#xff08;记得不要用记事本修改&#xff0c;否则可能会出现验证码显示不了问…