美文网首页
关于作用域的一些比较坑的题目

关于作用域的一些比较坑的题目

作者: VivaLaVida_692c | 来源:发表于2019-04-05 00:38 被阅读0次

    1.

    bar(); //报错

    var foo = function bar(name) {

    console.log("hello" + name);

    console.log(bar);

    };

    //alert(typeof bar);

    foo("world"); //"hello"

    console.log(bar); //undefined

    console.log(foo.toString());

    bar(); //报错

    2.

    function test() {

    console.log("test 函数"); //由于没有return  所以会返回一个undefined

    }

    setTimeout(function() {

    console.log("定时器回调函数");

    }, 0)

    test();

    function foo() {

    var name = "hello";

    }

    //test 函数  ,undefined,定时器回调函数

    3.

    var foo = 1;

    function bar() {

    foo = 10; //函数提升 将函数foo赋值为10,并不是吧全局变量变为10

    return;

    function foo() {}

    }

    bar();

    alert(foo); //答案:1

    4.经典闭包

    // 你理解的闭包是什么: 我理解的闭包就是创建一个不被销毁的(私有)作用域,可以随时读取其他函数内部变量的函数。,

    // 特点是:1.父函数里面有子函数.2.子函数使用父函数声明的变量3.子函数可以随时调用,

    //

    // 经典闭包1:

    for(var i=0;i<5;i++){

    setTimeout(function(){

    console.log(i) //5,5,5,5,5

    },500)

    }

    // 如果想输出0,1,2,3,4那该怎么做呢?把var 改成let 或者里面写一个自执行函数

    for(var i=0;i<5;i++){

    (function(i){

    setTimeout(function(){

    console.log(i) //5,5,5,5,5

    },500)

    })(i)

    }

    经典闭包2:

    function add(){

    var i=1;

    return function(){

    console.log(++i);

    }

    }

    var num =add();

    num();

    num();

    相关文章

      网友评论

          本文标题:关于作用域的一些比较坑的题目

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