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.在函数内部声明的变量在整个函数中都可以使用。如果遇到 局部变量 和 全局变量 冲突时,优先使用 局部变量。
    变量 和 函数具有同样的 预解析功能, 在函数的一开始就会把所有使用的变量都声明好。
-->

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值