zoukankan      html  css  js  c++  java
  • ecma2623执行环境练习

    1 词法作用域

    function c1(){return d1++}
    function a1(){var d1=0;return c1();}
    console.info(a1())
    //d1 undefined c1是在a1外部定义的

    //1 错误,变量对象中没找到cc
    alert(cc)

    //2 undefined,变量对象中找到了参数cc,但没赋值
    var xx=function(cc){
    alert(cc)
    }()

    //3 错误,变量对象把参数o=undefined
    var xx=function(o){
    alert(o.a)
    }()

    //4错误,变量对象把变量声明o=undefined
    alert(o.a)
    var o={}

    //6 undefined,此时执行后o是对象
    alert(o.a)

    //7 错误 ,变量对象把变量声明o=undefined
    var o;
    alert(o.a)

    2 作用域链问题 参数>函数声明>变量声明

    //如果参数已声明,但是没有值的话,就是undefined。
    //
    但是如果参数没有声明,就会向上查找。

    //1 undefined,在函数中,变量对象中参数a=undefined,优先使用
    var a22=0;
    var xx=function(a22){alert(a22)}()

    //2 参数a2=undefined。b2没找到,然后往上找到了=4.
    var d2=function(a2){
    var a2=3,b2=4;
    var c2=function(a2){
    alert(a2)
    alert(b2)
    }()
    }()

    3顺序 

    console.info(typeof ss3) //function
    var ss3=2
    function ss3(){alert("ok")}
    console.info(
    typeof ss3) //number

    //第一个输出为function是因为这个时候下面的代码没执行,在变量对象中,函数ss先声明,类型为function,然后变量ss的声明不能覆盖函数ss。
    //
    第二个输出的ss是number,是因为此时下面的代码已经执行,ss被赋值=2,
    //
    如有不明白请看 http://www.javaeye.com/topic/812668

    4 块级声明 

    //ff =1 ie=2. ff中可以在块级中声明?

    function f(){ alert(1)};
    f();
    if(1) { function f() { alert(2) } }
    ---------------------------------------
    for(var i4=0;i4<5;i4++){if(i4=3)break}
    alert(i4)
    //i4是全局作用域

    5 匿名函数与命名函数

    //解决在块级元素中函数声明的办法,这样在ff和ie下都是first
    ---
    var foo;
    if (true) {
    foo
    =function() {
    return 'first';
    }
    }
    else {
    foo
    =function () {
    return 'second';
    }
    }
    alert(foo())


  • 相关阅读:
    Javascript闭包的一些研究
    pytorchvision安装问题
    CUDA 基础
    语音识别入门推荐文献【转】
    【e2e】espnet框架安装问题集锦
    维特比算法与beam search
    kaldi识别问题集锦
    语音识别-重要开源数据
    git提交失败总结
    钟南山病后反思: 寿命长短, 不取决于衰老和疾病【转】
  • 原文地址:https://www.cnblogs.com/lunalord/p/1988761.html
Copyright © 2011-2022 走看看