zoukankan      html  css  js  c++  java
  • js 函数作用域

    像c c++ c#的作用域是语句块,以{}大括号来区分的,而python和js是以函数来区分作用域的。

    如:

    ================================ 1. 以函数作为作用域 (let除外)================================

            其他语言: 以代码块作为作用域
                        public void Func(){
                            if(1==1){
                                string name = 'Java';
                                
                            }
                            console.writeline(name);
                            
                        }
                        Func()
                        // 报错
                        
            Python:   以函数作为作用域
                        情况一:
                            def func():
                                if 1==1:
                                    name = 'alex'
                                print(name)
                                
                            func()
                            // 成功
                        情况二:
                            def func():
                                if 1==1:
                                    name = 'alex'
                                print(name)
                                
                            func()
                            print(name)
                            // 报错
                    
            JavaScript:  以函数作为作用域
            
                        function func(){
                            if(1==1){
                                var name = 'alex';
                            }
                            console.log(name);
                        }
                        func()
    

      


    ================================ 2. 函数的作用域在函数未被调用之前,已经创建,即申明定义函数时创建作用范围 ================================

            function func(){
                if(1==1){
                    var name = 'alex';
                }
                console.log(name);
            }
    

      

    ================= 3. 函数的作用域存在作用域链,并且也是在被调用之前创建。即嵌套函数中,越内层函数的变量越优先,依次向外层找,全局也找不到就报错 ==================

            示例一:
                xo = "alex";
                
                function func(){
                    // var xo = 'eric';
                    function inner(){
                        // var xo = 'tony';
                        console.log(xo);
                    }
                    
                    inner()
                }
                
                func()
            
            示例二:
                xo = "alex";
                
                function func(){
                    var xo = 'eric';
                    function inner(){
                        
                        console.log(xo);
                    }
                    
                    return inner;
                }
                
                var ret = func()
                ret()
            
            
            
            示例三:
                xo = "alex";
                
                function func(){
                    var xo = 'eric';
                    function inner(){
                        
                        console.log(xo);
                    }
                    var xo = 'tony';
                    
                    return inner;
                }
                
                var ret = func()
                ret()
    

      

    ================= 4. 函数内局部变量 声明提前,但不赋值 ==================

    function func(){
                console.log(xxoo);
            }
            
            func();
            // 程序直接报错
            
            function func(){
                console.log(xxoo);
                var xxoo = 'alex';
            }
            函数从上到下解释时,遇到函数定义,会先把里面所有局部变量先定义一下,但不赋值。
            
            func();
            // undefined
    

      

  • 相关阅读:
    org.hibernate.HibernateException: Could not obtain transactionsynchronized Session for current thread
    ajax上传文件
    iphone 图层操作
    什么是OAuth授权
    UIWebView得到加载页的title
    转iphone 动画实现方法
    c#字符串转datatime时,因操作系统不一致产生的问题解决方法
    Bold font in IPhone UILabel
    五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
    包含iphone4在内的icon,default及图片处理方法
  • 原文地址:https://www.cnblogs.com/alex-hrg/p/9446282.html
Copyright © 2011-2022 走看看