美文网首页
变量提前的回忆

变量提前的回忆

作者: 大淀桑浮不起來 | 来源:发表于2016-04-26 21:22 被阅读17次

大家都知道,在他所属的定义域类,会存在一个变量提前,就是声明这个变量的消息,会被提到本作用于最前面,于是乎就有了下面这种题目;

var c=2;
function fn(){
    console.log(a);
    var a=1;
    console.log(a);
    var c=1;
}
console.log(c);
fn();

输出的结果当然是,2,undefined,1;
为什么呢?

首先再fn这个房间内,变量a和c一旦被声明,那就如同放了两个写有a和c的气球上去,他会漂浮到自己这个房间的顶层,赋值好比是给这个气球再写上值,console.log来的比a赋值为1时早,所以第二个console.log结果是2,读到后面a才被赋值为1,于是乎最后一个console.log就为1;
这里可以用声明的变量提前来解释,还有代码是从上到下读的
那第一个console.log(c) 为什么不是1呢?不是一开始赋值为2,后面又对他重新赋值了么?其实因为fn里面的哪个 c,外面的想拿到函数内的一些变量,除非你return出来,或者用闭包提供,是拿不到的,这里就是定义域的作用,函数fn就好像一个城堡,隔离了内部的变量,所以第一个console.log(c)其实就是找的同一作用域的c,就是第一行代码。
想想,要不明天回忆一下 简单数据类型 和 引用数据类型 吧,晚安···

相关文章

  • 变量提前的回忆

    大家都知道,在他所属的定义域类,会存在一个变量提前,就是声明这个变量的消息,会被提到本作用于最前面,于是乎就有了下...

  • js循环和判断

    变量和函数预解析 变量预解析alert(a);//只把变量a的声明提前,赋值不提前,所以弹出undefined,表...

  • 13day-函数条件

    变量和函数预解析 变量预解析alert(a);//只把变量a的声明提前,赋值不提前,所以弹出undefined,表...

  • 函数传参、返回、条件语句、数组

    (1)变量和函数预解析变量预解析alert(a);//只把变量a的声明提前,赋值不提前,所以弹出undefined...

  • 函数传参、返回、条件语句、数组

    (1)变量和函数预解析变量预解析alert(a);//只把变量a的声明提前,赋值不提前,所以弹出undefined...

  • 函数

    (1)变量和函数预解析变量预解析alert(a);//只把变量a的声明提前,赋值不提前,所以弹出undefined...

  • 声明提前(笔试必考题)

    提前的是变量,而不是值,值不会提前。涉及到函数的作用域:全局变量和局部变量 在函数内部声明的变量就是局部变量;在函...

  • HTML5—函数(传参、返回、条件判断、数组)

    变量预解析 var a;alert(a) 只把变量a的声明提前,赋值不提前,所以弹出undefined,表示它的值...

  • 变量提前声明的特点

    以上两个输出分别是什么?为什么? 以上两个输出分别是什么?为什么? 以上两个输出分别是什么?为什么? var :声...

  • js中( function(){…} )()和( functio

    提前知识:声明提前,变量声明提前,函数声明提前,声明提前的先后顺序[https://www.cnblogs.com...

网友评论

      本文标题:变量提前的回忆

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