JavaScript中函数的参数学习笔记

 我们之前写的函数并没有给它传参,其实所谓的传参就是将参数传给函数,然后函数在内部做一些处理,那么如何给参数传参呢,其实函数后面的括号里面就是放参数的,下面举个例子:

 代码如下 复制代码

function sum(a, b)
{
 alert(a+b);
}

sum(12, 5);

上面的函数中,给sum设置了2个参数a和b,当调用sum时,传递了2个参数给函数,这时a就变为了12,b就变为了5,函数体内的也要变。a和b就起到一个占位符的作用,就好像你和同学去食堂打饭,突然想到早上吃饭看见饭卡里钱不多了,你就给你同学说先帮我排着队,冲完饭卡就过去,等你回来的时候,你就站到同学的位置,当然打饭也是你自己刷卡。上面代码中的数字就是你,字母就是你同学,alert(a+b)就是打饭付钱。当然你同学有名字,那这个a和b肯定也有名字,他们这种参数就叫做形参,就是个形式参数摆在那里,这个sum(12,5)中的参数就是实参,实际参数,也就是实际付钱的你。

        有的函数并有形参,或者有的时候要传给函数的参数不确定,那该怎么办呢,其实JS已经帮我们解决了这个问题,那就是每个函数都有自己的arguments对象,这个对象里装的就是传进来的那些参数。看看下面的代码就明白了。

 代码如下 复制代码

function sss()
{
 var sum=0;
 for(var i=0; i<arguments.length; i++){
  sum+=arguments[i];
 }
 alert(sum);
}

sss(12, 5, 2);

sss函数我们并没有给设置形参,但在调用的时候依然可以给它传参,而这些参数都在arguments里面,arguments也有length属性,但它不是数组,用alert(typeof arguments)弹出来的是object,可见它的的确确是个对象类型的。

        接下来就是操作属性的方法,其实操作属性有2种方法,除了用点来操作外,还有一个就是用方括号来操作,具体的还是来看代码:

 代码如下 复制代码

function setText(name)
{
 var oTxt=document.getElementById('txt1');
 oTxt.value='asdfasdfasd';
 oTxt['value']='asdfasdf';
}

上面的代码是设置一个文本输入框的内容,2种方法的最终效果都是一样的,但是又各有优点,用点来操作属性的有点很明显,代码写的短,方便,不用那么多的符号。而方括号设置属性的方法从上面的代码是怎么也看不出有什么有点是吧。那就接着看下面的代码:

 代码如下 复制代码

function setText(name)
{
 var oTxt=document.getElementById('txt1');
 oTxt.value='asdfasdfasd';
 oTxt[name]='er3523543';
 //oTxt.name='sdfqwrf'; 这种方法就成了设置属性了的值了,而不是形参name
}

setText('value');

相信这回大家能看出门道了吧,那就是传参,用方括号设置属性的优点就是可以给函数传参来设置属性。最后就是循环语句,这个就不多说了,和别的语言一摸一样,下面还是依照惯例上练习,望大家看源码后下面留言交流。

第一个循环语句的练习,给所有的DIV加背景色。

 代码如下 复制代码

<style type="text/css">
 #demo_main div {float: left; width:100px; height:100px; margin:10px; border:1px solid #000;}
 .red {background-color:red;}
</style>
<script type="text/javascript">
 window.onload=function (){
  var oDiv=document.getElementById('demo_main').getElementsByTagName('div');
  
  for(var i=0;i<oDiv.length;i++){
   oDiv[i].className='red';  
  }
 };
</script>
</head>

<body>
 <div id="demo_topBox">
  <div class="demo_topNav">
   <p class="demo_topText">这里是前端客小末的demo页,欢迎各种交流,各种留言。</p>
   <a class="demo_home" href="http://f2eer.com/" title="返回首页">返回首页</a>
  </div>
 </div>
 <div id="demo_main">
  <!-- 这里放作品 -->
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
 </div>
</body>

第二个是判断和循环结合的,全选、反选、不选

 代码如下 复制代码

      <!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>全选 反选 不选 - 前端客f2eer.com</title>
<style type="text/css">
 input {float:left;}
</style>
<script type="text/javascript">
 window.onload=function (){
  var oAll=document.getElementById('all');
  var oNo=document.getElementById('no');
  var oContrary=document.getElementById('contrary');
  var oDiv=document.getElementById('div1');
  var aIpt=oDiv.getElementsByTagName('input');
  
  oAll.onclick=function (){
   for(var i=0;i<aIpt.length;i++){
    aIpt[i].checked=true;
   }
  };
  oNo.onclick=function (){
   for(var i=0;i<aIpt.length;i++){
    aIpt[i].checked=false; 
   } 
  };
  oContrary.onclick=function (){
   for(var i=0;i<aIpt.length;i++){
    if(aIpt[i].checked==false){
     aIpt[i].checked=true; 
    }else{
     aIpt[i].checked=false; 
    }
   } 
  };
 };
</script>
</head>

<body>
 <div id="demo_topBox">
  <div class="demo_topNav">
   <p class="demo_topText">这里是前端客小末的demo页,欢迎各种交流,各种留言。</p>
   <a class="demo_home" href="http://f2eer.com/" title="返回首页">返回首页</a>
  </div>
 </div>
 <div id="demo_main">
  <!-- 这里放作品 -->
     <div id="div1">
   <input type="button" value="全选" id="all" />
   <input type="button" value="不选" id="no" />
   <input type="button" value="反选" id="contrary" />
   <input type="checkbox" />
         <input type="checkbox" />
         <input type="checkbox" />
         <input type="checkbox" />
         <input type="checkbox" />
         <input type="checkbox" />
         <input type="checkbox" />
         <input type="checkbox" />
     </div>
 </div>
</body>
</html>

 

第三个是商品弹出商品介绍

 代码如下 复制代码

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style>
* { padding: 0; margin: 0; }
li { list-style: none; }

.prompt { width: 710px; height: 301px; background: url(images/bg.gif); margin: 50px auto 0; position: relative; }

.prompt ul { position: absolute; top: 241px; }

.prompt .list1 { left: 30px; }
.prompt .list2 { right: 30px; }

.prompt li { float: left; width: 103px; height: 30px; line-height: 30px; text-align: center; margin-right: 1px; background: url(images/li_bg.gif) repeat-x; position: relative; cursor: pointer; }
.prompt h2 { color: #fff; font-size: 14px; }
.prompt p { width: 128px; height: 100px; padding: 10px; background: url(images/p_bg.gif) no-repeat; filter: alpha(opacity=80); opacity: 0.8; position: absolute; bottom: 28px; left: -24px; display: none; color: #fff; font-size: 12px; text-align: left; line-height: 16px; font-family: arial; }
.prompt .active { background: url(images/active.gif) no-repeat; font-weight: bold; }

</style>
<script type="text/javascript">
 window.onload=function (){
  var oDiv=document.getElementById('prompt');
  var aH=oDiv.getElementsByTagName('h2');
  var aP=oDiv.getElementsByTagName('p');
  for(var i=0;i<aH.length;i++){
   aH[i].index=i;
   aH[i].onmouseover=function (){
    this.className='active';
    aP[this.index].style.display='block';
   };
   aH[i].onmouseout=function (){
    this.className='';
    aP[this.index].style.display='none';
   };
   aP[i].onmouseover=function (){
    this.style.display='block';
   };
   aP[i].onmouseout=function (){
    this.style.display='none';
   };
  }
 }
</script>
</head>

<body>
 
 <div id="demo_main">
  <!-- 这里放作品 -->
  <div id="prompt" class="prompt">
   <ul class="list1">
    <li>
     <h2>产品</h2>
     <p>NX5<br />三星NX平台相机14.6万像素的APS的- C的传感器工作结构紧凑,重量轻体</p>
    </li>
    <li>
     <h2>经销商</h2>
     <p>鼎好电子大厦A座9019室<br />联系电话:010-62607039 13501246332</p>
    </li>
    <li>
     <h2>价格</h2>
     <p>NX5<br />参考价:890元</p>
    </li>
   </ul>
   <ul class="list2">
    <li>
     <h2>产品</h2>
     <p>欧达D350<br />500万像素,最高可插值1200万像素 高清规格:1080p</p>
    </li>
    <li>
     <h2>经销商</h2>
     <p>鼎好电子大厦A座9019室<br />联系电话:010-62607039 13501246332</p>
    </li>
    <li>
     <h2>价格</h2>
     <p>NX5<br />参考价:1890元</p>
    </li>
   </ul>
  </div>
 </div>
</body>
</html>

今天的学习就到这里,文章中如有哪里理解错了,还请大家多多指教。:)

时间: 2024-09-28 05:44:41

JavaScript中函数的参数学习笔记的相关文章

javascript中函数作为参数调用的方法_javascript技巧

本文实例讲述了javascript中函数作为参数调用的方法.分享给大家供大家参考.具体分析如下: 先来看示例: function Map(){ var obj = {}; this.put = function(key, value){ obj[key] = value; } this.eachMap = function(fn){ for(var attr in obj){ fn(attr, obj[attr]); } } } var m = new Map(); m.put('01', 'a

C语言中函数 与 指针学习笔记

一.指向函数的指针 函数名可以在表达式中被解读成"指向函数的指针",因此,正如代码清单 2-2 的实验那样,写成 func 就可以取得指向函数的指针. "指向函数的指针"本质上也是指针(地址),所以可以将它赋给指针型变量. 比如有下面的函数原型: int func(double d); 保存指向此函数的指针的变量的声明如下: int (*func_p)(double); 然后写成下面这样,就可以通过 func_p 调用 func, int (*func_p)(dou

JavaScript中自定义事件的学习笔记

在web前端开发中,很多人可能不会用到js的自定义事件,但如果是做一个相对来说比较大的项目,尤其是多人协同开发的时候,自定义事件就显得很重要了.那么,什么是js中的自定义事件呢?我们先来看一个例子: 前端开发员A封装了一个函数:  代码如下 复制代码 function move(){     alert(a);  //以此来代表N行代码 } 过段时间,前端开发员B要在A的基础上丰富这个函数,于是,他会这样写:  代码如下 复制代码 function move(){     alert(a); 

Javascript中switch case 语句学习笔记

在if条件语句中,逻辑条件只能有一个,如果有多个条件,可以使用嵌套的if语句来解决,但这种方法会增加程序的复杂度,降低程序的可读性. 使用switch流程控制语句可以完美地解决这些问题,其基本结构如下: switch语句语法  代码如下 复制代码 switch(条件表达式) {         case 常量:         {                 语句a;         }         case 常量:         {                 语句b;     

javaScript中Blob对象的学习笔记

Blob表示二进制原始数据,一个Blob对象就是一个包含有只读原始数据的类文件对象. 继承Blob功能的API有: File对象:负责处理那些以文件形式存在的二进制数据,也就是操作本地文件: FileList对象:File对象的网页表单接口: FileReader对象:负责将二进制数据读入内存内容: URL对象:用于对二进制数据生成URL. 一. 创建Blob对象的方法 创建Blob对象的方法有三种,如下: 1)可以调用Blob构造函数. 2)还可以使用一个已有Blob对象上的slice()方法

重温JavaScript中的正则表达式 js学习笔记

一.创建正则表达式 创建正则表达式和创建字符串类似 , 创建正则表达式提供了两种方法 , 一种是采用 new运算符,另一个是采用字面量方式. 复制代码 代码如下: var dog = new RegExp('dog'); // 第一个参数字符串 var dog = new RegExp('dog', 'ig'); // 第二个参数可选模式修饰符 var dog = /dog/; var dog = /dog/ig; //字面量方式. RegExp 对象包含两个方法 : test() 和 exec

ASP.NET中MVC3接收参数学习笔记

测试一    代码如下 复制代码 public ActionResult Index(string arg) {     if (arg == null)     {         return Content("null");     }     else if (arg == "")     {         return Content("empty");     }     else     {         return Cont

javaScript中的this示例学习详解及工作原理

 这篇文章主要介绍了javaScript中的this示例学习详解及工作原理,大家参考使用吧 this的工作原理   如果一个函数被作为一个对象的方法调用,那么this将被指派为这个对象.   代码如下: var parent = {     method: function () {         console.log(this);     } };   parent.method(); // <- parent       注意这种行为非常"脆弱",如果你获取一个方法的引用

javascript中函数拼接object问题

问题描述 javascript中函数拼接object问题 我有一个函数,参数是object类型,如下: function message(obj){ alert(obj.id); } 我用拼接的方式调用函数,但是调用不了,如下 var obj = new Object(); obj.id=111; '' 解决方案 function message(obj) { alert(obj.id); } var obj = new Object(); obj.id = 111; message(obj);