JavaScript小白教程4

JavaScript 函数定义


JavaScript 使用关键字 function 定义函数。

函数可以通过声明定义,也可以是一个表达式。

函数表达式

<body>

<p>函数存储在变量后,变量可作为函数使用:</p>
<p id="demo"></p>
<p id="demo1"></p>
<script>
var x = function (a, b) {return a * b};
document.getElementById("demo").innerHTML = x;
document.getElementById("demo1").innerHTML = x(4, 3);
</script>

</body>

输出结果:

函数存储在变量后,变量可作为函数使用:

function (a, b) {return a * b}

12

Function() 构造函数

<body>

<p id="demo"></p>
<script>
var myFunction = function (a, b) {return a * b}
document.getElementById("demo").innerHTML = myFunction(4, 3);
</script>
    
<p id="demo1"></p>
<script>
var myFunction = new Function("a", "b", "return a * b");
document.getElementById("demo1").innerHTML = myFunction(4, 3);
</script>

</body>

输出结果:

12

12

自调用函数

<body>

<p>函数可以自动调用:</p>
<p id="demo"></p>
<script>
(function () {
    document.getElementById("demo").innerHTML = "Hello! 我是自己调用的";
})();
</script>

</body>

输出结果:

函数可以自动调用:

Hello! 我是自己调用的

函数是对象

<body>

<p> toString() 将函数作为一个字符串返回:</p>
<p id="demo"></p>
<script>
function myFunction(a, b) {
    return a * b;
}
document.getElementById("demo").innerHTML = myFunction.toString();
</script>
    
</br>
    
<p> arguments.length 属性返回函数接收到参数的个数:</p>
<p id="demo1"></p>
<script>
function myFunction(a, b) {
    return arguments.length;
}
document.getElementById("demo1").innerHTML = myFunction(4, 3);
</script>

</body>

输出结果:

toString() 将函数作为一个字符串返回:

function myFunction(a, b) { return a * b; }

arguments.length 属性返回函数接收到参数的个数:

2

箭头函数

ES6 新增了箭头函数。

箭头函数表达式的语法比普通函数表达式更简洁。

<body>

<h2>JavaScript 箭头函数</h2>

<p>IE11 及更早 IE 版本不支持箭头函数。</p>

<p id="demo"></p>

<script>
const x = (x, y) => { return x * y };
document.getElementById("demo").innerHTML = x(5, 5);
</script>


</body>

输出结果:

JavaScript 箭头函数

IE11 及更早 IE 版本不支持箭头函数。

25

JavaScript函数传参

<body>

<p>查找最大的数。</p>
<p id="demo"></p>
<script>
function findMax() {
    var i, max = arguments[0];
    
    if(arguments.length < 2) return max;
 
    for (i = 0; i < arguments.length; i++) {
        if (arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;
}
x = findMax(1, 123, 500, 115, 44, 88);
document.getElementById("demo").innerHTML = x;
</script>

</body>

输出结果:

查找最大的数。

500

使用构造函数调用函数

<body>

<p>该实例中, myFunction 是函数构造函数:</p>
<p id="demo"></p>
<script>
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}
var x = new myFunction("John","Doe")
document.getElementById("demo").innerHTML = x.firstName; 
</script>

</body>

输出结果:

该实例中, myFunction 是函数构造函数:

John

传入数组

<body>

<p id="demo"></p>

<script>
var myObject, myArray;
function myFunction(a, b) {
    return a * b;
}
myArray = [10, 2]
myObject = myFunction.apply(myObject, myArray);      // 返回 20
document.getElementById("demo").innerHTML = myObject; 
</script>

</body>

输出结果:

20

JavaScript闭包

<body>

<p>局部变量计数。</p>
<button type="button" onclick="myFunction()">计数!</button>
<p id="demo">0</p>
<script>
var add = (function () {
    var counter = 0;
    return function () {return counter += 1;}
})();
function myFunction(){
    document.getElementById("demo").innerHTML = add();
}
</script>

</body>
<body>

<p>局部变量计数。</p>
<button type="button" onclick="myFunction()">计数!</button>
<p id="demo">0</p>
<script>
function add() {
    var counter = 0;
    return counter += 1;
}
function myFunction(){
    document.getElementById("demo").innerHTML = add();
}
</script>

</body>

这两段代码执行的结果不一样,一个可以加一个只能加到1不变

原文地址:https://www.cnblogs.com/jiatianyi/p/10960476.html