JavaScript函数有带参数与不带参数两种形式,不带参数情况如下:

function myFunction() {
alert('HelloWorld!')
}

  在这种类型的函数中,输出值是确定的,即明确清楚或可以直接看出输出结果。那么带参数的函数的情况呢,什么时候需要用到参数,为什么要用,好处在哪里?首先我们来看一个简单设置边框颜色的函数,如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>SetColor</title>
<style>
#div1{
width:300px;
height:300px;
border:2px solid red;
</style>
<script>
function toGreen(){ //设置绿色 var oDiv = document.getElementById('div1');
oDiv.style.borderColor = 'Green';
}
function toBlue(){
var oDiv = document.getElementById('div1');
oDiv.style.borderColor = 'Blue';
}
function toYellow(){
var oDiv = document.getElementById('div1');
oDiv.style.borderColor = 'Yellow';
}
</script>
</head>
<body>
<input type="button" value="变绿" onclick="toGreen()">
<input type="button" value="变蓝" onclick="toBlue()">
<input type="button" value="变黄" onclick="toYellow()">
<br/>
<div id="div1"></div>
</body>
</html>

  在这个例子中,虽然能够实现目的,但是代码太过繁琐且重复出现类似甚至相同代码,

那么可不可以想办法将代码优化呢?这个时候就到了发挥参数作用的时候了,因为这个例子中只需设置一个

相同的属性值,那么通过传参,能够大大减少冗余的代码,提高效率。代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>SetColor</title>
<style>
#div1{
width:300px;
height:300px;
border:1px solid red;
}
</style>
<script>
function setColor(color){
var oDiv = document.getElementById('div1');
oDiv.style.borderColor = color;
}
</script>
</head>
<body>
<input type="button" value="变绿" onclick="setColor('Green')">
<input type="button" value="变蓝" onclick="setColor('Blue')">
<input type="button" value="变黄" onclick="setColor('Yellow')">
<br/><br/>
<div id="div1"></div>
</body>
</html>

  在这个例子中,我们用了一个带参数的setColor(color)函数实现了将设置不同颜色的需求,无论有多少按钮,设置多少种颜色,这一个函数就可以解决。那么什么时候可以使用带参数的函数的呢?当要设定属性值不确定时,传参的方法可以让代码更简洁。

那么如果需要设置的属性值不止一个,甚至多个时呢?那就根据需要确定参数的个数,比如设置DIV的宽度,高度,背景颜色三个或多个属性时,可以采用function(name,value){}两个参数的形式,具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>改变样式</title>
<style>
#div1{
width:300px;
height:300px;
background: red;
}
</style> </head>
<body>
<input type="button" value="变宽" onclick="changeStyle('width','400px')">
<input type="button" value="变高" onclick="changeStyle('height','400px')">
<input type="button" value="变绿" onclick="changeStyle('background','Green')">
<br/><br/>
<div id="div1"></div>
<script>
function changeStyle(name,value){
var oDiv = document.getElementById('div1');
oDiv.style[name] = value;
} function myFunction(){
alert('HelloWorld!')
}
</script>
</body>
</html>

需要注意的是:oDiv.style[name] = value; 这一行代码,为什么我们不写oDiv.style.name = value呢?因为计算机会认为这段代码中的name是oDiv的一个属性,而不同于参数中的name。oDiv.style[name] = value 这种方式可以避免这种情况,而这两种写法都符合属性的输出方式规范,基本上中括号的写法可以代替所有的点写法。

总结:带参数的函数用于输出值不确定的情况,好处是精简代码。(以后有更深的体会会补充。)

JavaScript学习笔记 -- 带参数arguments的函数的用法的更多相关文章

  1. C语言学习011:带参数的main函数

    直接上代码 #include <stdio.h> int main(int argc,char *argv[]){ printf("%i \n",argc); int ...

  2. <深入理解JavaScript>学习笔记(2)_揭秘命名函数表达式

    写在前面的话 注:本文是拜读了 深入理解JavaScript 之后深有感悟,故做次笔记方便之后查看. 感觉这章的内容有点深奥....略难懂啊. 先坐下笔记,加深一下印象吧. 我主要记一下自己感觉有用的 ...

  3. JavaScript学习笔记(七)—— 再说函数

    第八章 函数 1 函数声明和函数表达式 差别一:函数声明:函数在执行代码前被创建:函数表达式是在运行阶段执行代码时创建: 差别二:函数声明创建一个与函数同名的变量,并让她指向函数:使用函数表达式,不给 ...

  4. Javascript学习笔记:3种定义函数的方式

    ①使用函数声明语法定义函数 function sum(num1,num2){ return num1+num2; } ②使用函数表达式定义函数 var sum=function(num1,num2){ ...

  5. JavaScript学习笔记(散)——addLoadEvent函数

    先贴源码 function addLoadEvent(func) { var oldonload = window.onload; //存入当前onload事件 if(typeof window.on ...

  6. JavaScript:学习笔记(5)——箭头函数=>以及实践

    JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...

  7. JavaScript学习笔记[0]

    JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...

  8. JavaScript:学习笔记(2)——基本概念与数据类型

    JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...

  9. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

随机推荐

  1. [Angular 2] Move and Delete Angular 2 Components After Creation

    After the original order is set, you can still leverage methods on the Angular 2 ViewContainer to re ...

  2. [AngularJS] Adding custom methods to angular.module

    There are situations where you might want to add additional methods toangular.module. This is easy t ...

  3. select,epoll的比较

    机制: select:只支持水平触发(数据不处理完无限通知) epoll:支持水平触发和边缘触发(仅通知一次) 单进程监控FD个数 select: 由FD_SETSIZE设置,默认值是2048.在大量 ...

  4. Preventing CSRF in Java web apps---reference

    reference from:http://ricardozuasti.com/2012/preventing-csrf-in-java-web-apps/ Cross-site request fo ...

  5. kafka删除topic

    手动: 删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录 删除zookeeper & ...

  6. jQuery的如何捕捉回车键,改变事件标签

    我希望有一个jQuery的解决方案,我必须接近,有什么需要做的? $('html').bind('keypress', function(e) { if(e.keyCode == 13) { retu ...

  7. NSURLConnection & NSRULSession

    NSURLConnection & NSRULSession NSURLSession是NSURLConnection 的替代者,在2013年苹果全球开发者大会(WWDC2013)随ios7一 ...

  8. IOS设计模式六大法则

    设计模式的六大原则 单一职责原则 定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责 问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类 ...

  9. [原创] Web UI 自动化日期控件的处理

    序 在构建自动化套件的过程中,日期操作是一件很重要也很频繁的事情.有的日期控件的div层级结构复杂,同一个类型的日期控件在多个子系统中的表现形式也大相径庭.多数工程师为了避免重复的工作,会封装抽象一个 ...

  10. Java Script基础(二) 基本语法

    一.变量的声明和使用 JavaScript是一种弱类型的语言,没有明确的数据类型,在声明变量时,不需要指定变量的类型,变量的类型由赋给变量的值决定. 变量声明的语法: var 变量名; 示例: var ...