Javascript函数和变量的预解析功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <script>
        //1.javascript重载
        function f1(){
            alert('first f1');
        }

        function f1(name){
            alert(name);
        }

        //原因是javascript中没有函数重载的概念,所以遇到同名函数时,会用最后一次函数定义覆盖前面的函数定义。
        //f1();//调用函数弹出undefined


        //2.arguments对象
        function add(){
            var sum = 0;
            //遍历累加每个参数的值
            for(var i = 0 ; i< arguments.length; i++){
                sum+= arguments[i];
            }
            return sum;
        }
        var result =  add(10,20,30,40,50);
        //alert(result);

        //3.函数预解析
        var x = 1 , y = 0, z= 0;

        function add3(n){ n= n+1;return n }
        y = add3(x);
        function add3(n){ n= n+3;return n }
        z = add3(x);

        //alert(y + '......' + z); // 打印4.....4并不是2.....4

        //4.
        var username = 'steve';

        function f4(){
            alert(username);
            var username ='pan';
            alert(username);
        }
        f4();
        alert(username);
    </script>

</head>
<body>
    
</body>
</html>


<!--    
    1.Javascript中函数不能重载
    2.Javascript中没有函数重载,那么可以使用类似C#中可变参数来解决,在javascript中叫做arguments对象
    并且所有的方法都无需定义形参, 定义形参的目的是为了使用方便.无论是否定义了形参,在实际调用中该函数时,所有的参数都包含在arguments对象中了
    3.因为函数有 预解析 的功能,所以在JavaScript执行之前会将所有的函数先进行预解析。预解析的时候就会使用最后定义函数覆盖前面同名定义的函数。
    4.在函数内部声明的变量在整个函数中都可以使用。如果遇到 局部变量 和 全局变量 冲突时,优先使用 局部变量。
    变量 和 函数具有同样的 预解析功能, 在函数的一开始就会把所有使用的变量都声明好。
-->
发布了60 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_24432127/article/details/90731712