作用域

作者: 蜕变最美的你 | 来源:发表于2017-08-11 10:43 被阅读0次

下面这段代码输出结果是? 为什么?

var a = 1;
setTimeout(function(){
    a = 2;
    console.log(a);  // 最后输出 结果为: 2;
}, 0);
var a ;
console.log(a);  // 首先输出 结果为:1;
a = 3;
console.log(a); // 其次输出 结果为:3 ;

输出顺序:首先在setTimeout中的console.log() 需要在所有的js代码执行完毕之后再执行里面的函数所以是最后输出,不在setTimeout中的console.log() 按照顺序输出;
输出结果:按照输出顺序来说因为存在变量提升先把所有的a提升到顶部后赋值,所以首先输出的结果为: 1;然后赋值 a = 3;其次的输出结果就是:3;再看setTimeout中的函数作用域 a 虽然是全局变量也是离函数中 console.log最近的a ;所以输出结果为:2;

可以理解为下面代码:

var a;
var a;
a=1;
console.log(a); 
a = 3;
console.log(a);
setTimeout(function(){
    a = 2;
    console.log(a);  // 最后输出 结果为: 2;
}, 0);

相关文章

  • js作用域

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 作用域,作用域链

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • 一网打尽 JavaScript 的作用域

    JavaScript 的作用域包括:模块作用域,函数作用域,块作用域,词法作用域和全局作用域。 全局作用域 在任何...

  • 作用域

    词法作用域,动态作用域,全局作用域,局部作用域,函数作用域,块级作用域,有些地方还能看到隐式作用域和显示作用域。 ...

  • JS的作用域

    JS的作用域: 全局作用域、函数作用域、eval 作用域、块级作用域 全局作用域: 函数作用域: 结果截屏: 说...

  • [ES6]1.1作用域

    作用域 全局作用域(global/window) 函数作用域/局部作用域(function) 块状作用域({}) ...

  • C - 作用域

    C - 作用域 一个 C 变量的作用域可以是: 块作用域 函数作用域 函数原型作用域 或 文件作用域 作用域描述程...

  • JavaScript作用域分类

    JavaScript作用域分类全局作用域局部作用域函数作用域块级作用域catchwithlet 和 const 什...

  • JS基础---05作用域

    JavaScript基础 1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作...

网友评论

      本文标题:作用域

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