美文网首页
JS执行环境访问

JS执行环境访问

作者: EO_eaf6 | 来源:发表于2019-12-22 15:16 被阅读0次

    1、javascript没有块级作用域,无块作用域限制,局部环境销毁

    function changeColor(){
           for(var i=0;i<3;i++){
            var num=0;
             num=i
          }
          alert(num)//3
    }
    console.log(num)//undefined
    

    (1)无块作用域限制:在这里alert(num)正常输出num的值,因为javascript没有块级作用域,alert()不会访问不到num(但在c,c++,Java中有块级作用域)
    (2)局部环境销毁:num仍然作为一个变量被写入changeColor执行环境对象,因为changeColor执行环境在执行完后,环境销毁,num变量不存在

    2、不使用var声明的变量被写进全局环境

    function changeColor(){
           for(var i=0;i<3;i++){
             num=i;
          }
          alert(num)
    }
    console.log(num)
    

    //console打印出num值,使用var的变量被添加到最近的执行环境中,不使用var添加到全局环境中

    3、变量属于哪个域是定义时确定不是调用时确定,变量搜索顺序为从内到外

    var color="red"
    var fu=function(){
         console.log(color)
         var color="blue"
    }
    fu()
    //结果:undefined
    var color="red"
    var fu=function(){
         console.log(color)
    }
    fu()
    //结果:red
    

    (1)变量属于哪个域是定义时确定不是调用时确定:定义函数时,fu对象域中有变量color,全局环境中有变量color,
    (2)执行时console.log()从内到外搜索到color属于fu对象,但此时color只声明未被初始化,结果为undefined

    4、全局对象:在任何地方可被访问,模块化编程避免使用
    最外层定义变量
    全局对象的属性
    未定义直接赋值的变量

    相关文章

      网友评论

          本文标题:JS执行环境访问

          本文链接:https://www.haomeiwen.com/subject/ktuonctx.html