JavaScript学习笔记 -- 带参数arguments的函数的用法

时间:2022-08-26 16:20:35

  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 这种方式可以避免这种情况,而这两种写法都符合属性的输出方式规范,基本上中括号的写法可以代替所有的点写法。

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