美文网首页技术文
一道题引发的变量声明及作用域的关系

一道题引发的变量声明及作用域的关系

作者: 蜻蜓之鱼 | 来源:发表于2016-07-12 17:43 被阅读20次

var tt = 'aa';

function test(){

    alert(tt);  //underfined;

    var tt = 'dd';

    alert(tt);  //dd

}

test();

注:js引擎在执行的时候会把所有的变量、函数声明提升到当前作用域的最前面。

所以如上代码就相当于

var tt = 'aa';

function test(){

    var tt;//只是声明但未赋值的变量值为undefined

    alert(tt);  //underfined;

     tt = 'dd';

     alert(tt);  //dd

}

test();

相关文章

  • 一道题引发的变量声明及作用域的关系

    var tt = 'aa'; function test(){ alert(tt); //underfined...

  • ES6学习-块级作用域绑定

    var声明及变量提升(Hoisting)机制 在函数作用域通过var声明的变量,无论在哪里声明都会被当成作用域顶部...

  • 深入理解ES6-块级作用域绑定

    var声明及变量提升(Hoisting)机制 在函数作用域或全局作用域钟通过关键字var声明的变量,都会被当成在当...

  • JavaScript第八章 BOM

    Windows对象全局作用域全局作用域中声明的变量,函数和方法都会变成windows的属性和方法窗口关系及框架每个...

  • var let const之间的区别?

    1.var ①var声明的变量没有块级作用域,只有函数作用域和全局作用域 ②var声明的变量有变量提升 ③变量可以...

  • 闭包的形成,弊端

    闭包的形成与变量的作用域以及变量的生存周期有密切的关系关于变量及变量声明周期 链接 闭包的形成 Javascrip...

  • ES6的一些新特性

    let变量声明及声明特性 声明变量: 特性: 变量不能重复声明(防止变量污染) 块级作用域(ES5:全局、函数、e...

  • 从闭包到es6变量声明

    之前学习闭包的时候碰到一道题 var声明的变量没有块级作用域。所以实际上这里的i实际上是定义在全局作用域下的 co...

  • es6学习总结

    let 声明变量具有块级作用域,for循环声明变量有个特点,声明变量部分是父作用域,代码块为子作用域,且互不影响,...

  • 闭包那点事儿

    >js变量的作用域 全局作用域(全局变量) : 在函数外面声明的变量 生命周期(变量从声明到销毁)...

网友评论

    本文标题:一道题引发的变量声明及作用域的关系

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