• js作用域


    先看下面2个例子

    <script>
    fn();
     var fn =function (){
        alert("fn called");
    }
    </script>

    上面代码报错

    求阶层一把使用

    <script>
    function fn(n){
        if(n<=1) return 1;
        return n*arguments.callee(n-1);
    }
    </script>

    在EMCAscript第五版的静态模式中,callee被禁用

    作用域
    1.全局作用域
    2.函数作用域
    1.1.全局作用域 是函数之外(最外层代码)的作用域. 在函数之外进行声明的名称属于全局作用域,这里的名称就是所谓的
    全局变量及全局函数
    在函数内进行声明的名称拥有的函数作用域,又称局部作用域,作为函数形参的参数变量也属于局部函数作用域。
    在javascript中函数作用域与进行声明的行数没有关系

    <script>
        var x=1;
        function f(){
        p("x="+x);//x=undefined
        var x=2;
        p("x="+x);//x=2
        }
        f();
        </script>

    局部变量的作用域是整个函数f内部,由于此时还没有对其赋值,所以最开始读取的是undefined
    其与下面代码等价

    <script>
        function f(){
            var x;
            p("x="+x);
            x=2;
            p("x="+x);
        }
        </script>

    所以建议在函数的开始处对所有的局部变量进行声明

    <script>
        var x=1;
        function f(){
            p("x="+x);//x=1
        }
        f();
        </script>

    块级作用域
    js中不存在块级作用域

    <script>
        var x=1;
        {
            var x=2;
            p("x="+x);  //2
        }
        p("x="+x);//2
    //for语句中对循环变量进行声明是一种习惯做法
        </script>
    let与块级作用域
        js随无块级作用域,let可实现同等效果
        一.let定义(let声明)
        二.let语句
        三.let表达式
        1.let定义
            let var1[=value1] [,var2 [=value2] .........;
  • 相关阅读:
    前端下拉框
    使用Redis的有序集合实现排行榜功能
    python--list,str,dict,json,tuple互换用法实例
    微信支付
    C++创建及访问动态对象
    C++动态持久内存分配(new)
    C++函数与指针
    C++数组与指针
    C++指针基础
    MySQL再安装
  • 原文地址:https://www.cnblogs.com/HKUI/p/4237219.html
Copyright © 2020-2023  润新知