JS中的apply和arguments小练习

xml 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>apply和arguments</title>
</head>
<body>
<!-- 用JS求数组中的最小值和最大值的练习 -->
 <!-- apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性.  
 Function.apply(obj,args)方法能接收两个参数  
 obj:这个对象将代替Function类里this对象  
 args:这个是数组,它将作为参数传给Function(argsarguments) -->
<!--  apply的一个巧妙的用处,可以将一个数组默认的转换为一个参数列表([param1,param2,param3] 转换为 param1,param2,param3) 这个如果让我们用程序来实现将数组的每一个项,来装换为参数的列表,
可能都得费一会功夫,借助apply的这点特性,所以就有了以下高效率的方法 -->
</body>
  <script type="text/javascript">
    var arr=[2,4,1,5,8,-6,-4,6]
    function getMin(){
    var num=0;
    for(var i=0;i<arguments.length;i++){
           if(arguments[i]<num){
             num=arguments[i];
           }
    }
    alert(num);
    }
    getMin.apply(window,arr);
  /*  Math.max 可以实现得到数组中最大的一项  
  
      因为Math.max 参数里面不支持Math.max([param1,param2]) 也就是数组  
  
      但是它支持Math.max(param1,param2,param3...),所以可以根据刚才apply的那个特点来解决 var max=Math.max.apply(null,array),这样轻易的可以得到一个数组中最大的一项  
  
       (apply会将一个数组装换为一个参数接一个参数的传递给方法)  
  
         这块在调用的时候第一个参数给了一个null,这个是因为没有对象去调用这个方法,我只需要用这个方法帮我运算,得到返回的结果就行,.所以直接传递了一个null过去 */


        /* 另一种方法来拿到数组中的最小值*/
         function min(){
           return Math.min.apply(null,arr);
         }
         alert(min());


         /*arguments 对象
          在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。
例  如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。
因此,无需明确命名参数,就可以重写函数:*/




  /*还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。*/


  /*注释:与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。*/
  </script>
</html>  
相关推荐
东风破_4 小时前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_5 小时前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
寒霜雨刃5 小时前
【原创】海光Z100 DCU适配vLLM实录(二):W4A16大M Prefill结构重写、GDN融合与长上下文HIP Attention
深度学习·神经网络·amd·rocm·ai infra·海光z100·gfx906
蒲公英eric5 小时前
从客户端到服务端:DVWA DOM 型 XSS 模块完整漏洞分析教程
前端·web安全·ai·xss·dvwa·ai安全
单线程_015 小时前
从案例分析 Vue3 Tokenizer+Parser 源码三
前端·javascript·vue.js
顶点多余6 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
Setsuna_F_Seiei6 小时前
前端转型 Agent 开发 03 之 Agent Tools - 给 Agent 装上手脚
前端·agent·ai编程
jay神6 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
小磊哥er7 小时前
深入解构Claude Code - 第 8 篇 · 数据放哪、钱怎么算
javascript·ai编程
kyriewen9 小时前
我装了30多个Skill,给AI安排了8个岗位
前端·javascript·ai编程