JS基础:变量作用域&变量函数提升

<!DOCTYPE html>
<html lang="en">
        <head>
                <meta charset="UTF-8">
                <title>Title</title>
        </head>
        <body>
                <script>
                        function  function1() {
                                console.log("function1");
                                function2();
                                return 1;
                        }
                        function function2(){
                                        console.log("function2")
                                }
                        console.log(function1);//直接打印方法名,会把函数代码以字符串方式打印出来
                        /*执行函数,会执行方法中的代码并返回一个返回值
                        如果方法中包含了其他方法,会按照顺序执行
                        执行到调用其他方法的位置时会将调用的方法执行完毕再继续执行后续代码*/
                        function1();//输出结果,先输出function1,再输出function2
                        console.log("----------");
                        var a = function1();//调用并取得返回值,将返回值存入变量a
                        console.log(a);
                        var b =function1;//函数名赋值给其他变量表示把整个函数赋值给其他变量使用
                        console.log(b);
                         console.log("----------");
                        /*变量作用域:变量生效的范围
                                全局作用域,定义在函数外,script标签范围内,整个页面都可以使用
                                局部作用域,定义在函数内,仅在函数内部使用,也叫做局部变量
                         */
                        var  x = 1;
                        function  function3() {
                                var i = 1;
                                console.log(x + i);//输出2
                                var q =5,w=6;//逗号表示并且,此行代码相当于var q = 5; var w = 6;
                                var e = r =5;//表示创建局部变量e=5,创建隐式全局变量r=5;
                                j = 10;// //函数内不使用var声明的变量是隐式全局变量,不推荐使用
                        }
                         //console.log(x+i);    变量ide 作用域在function3范围内,此行代码报错
                       function3();
                        console.log(j);//先调用方法,则隐式全局变量正常输出,后调用方法或未调用方法此行代码报错
                        console.log(r);
                         console.log("----------");
                        /*变量和函数提升
                                变量和函数是存储数据的,代码运行前会将变量和函数提升,方便调用,既可以先调用后定义
                                变量提升规则:会将变量提升到作用域的第一行,但只提升变量名称,
                                                        如果先调用不会报错但值为undefined,隐式变量不存在提升
                                函数提升规则:函数提升到作用域的第一行,可以提前调用,可以调用的范围增大
                                                        变量表达式声明的函数是按照变量提升规则进行提升,因此不能提前调用  */
                        console.log(p);
                        var  p = 50;
                        function4();
                        //function5();//变量表达式声明的函数提前调用报错
                        function function4(){
                                console.log("function4");
                        }
                        var function5 = function () {
                                console.log("function5");
                        }
                       function5();
                </script>
        </body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值