前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript几个作用域问题

JavaScript几个作用域问题

作者头像
寒月十八
发布2018-01-30 11:41:18
5120
发布2018-01-30 11:41:18
举报

1、

代码语言:javascript
复制
var a = 0 ;

function f(){
  a = 1;
  console.log(a); //全局变量a
代码语言:javascript
复制
} console.log(a); //全局变量af();

 输出结果为:1 1 ,function中未声明直接赋值的a为作用域window的全局变量,很好理解

2、

代码语言:javascript
复制
var a = 0;
 function test(){
      var a;
      console.log(a); //局部变量a
      a = 1;
      console.log(a); //局部变量a
代码语言:javascript
复制
} test(); conosle.log(a); //全局变量a

  输出结果为:undefined 1 0

3、

代码语言:javascript
复制
    var a =0;
    function test(){
       console.log(a);
       var a = 1;
       console.log(a);
    }

    test();
    console.log(a);

  输出结果为:undefined 1 0 

总结:

1. JavaScript中只存在两种作用域:全局作用域window和函数作用域function,外部的function domain嵌套内部的function domain,这就是闭包原理;

2. function domain中未使用var事先声明而直接赋值或调用的变量会访问上一层作用域中的同名变量,一直到window全局domain,如果找不到则会报错;

3. var声明变量的执行优先级是最高的,所以在例子3中test()中第一次console.log(a)执行之前,已经事先执行了var a声明,但并未执行a = 1赋值,所以此时输出undefined

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-02-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档