JS中的作用域
2016-04-14 17:11
330 查看
遵循“预解析,逐行解读”
和函数形式不一致,调用未传参
//预解析,逐行解读 alert(a); //预解析后剩下function a(){alert(4);} var a=1; alert(a); //1 function a(){alert(2);} alert(a); //1 var a=3; alert(a); //3 function a(){alert(4);} alert(a); //3 alert(typeof(a)); //number
当a为局部变量时
var a = 1; function fn1() { alert(a); //undefine var a = 2; //预解析,找到var,局部变量 } fn1(); alert(a); //1
当a为全局变量时
var a = 1; function fn1() { alert(a); //1 a = 2; //全局变量 } fn1(); alert(a); //2
和函数形式不一致,调用未传参
var a = 1; function fn1(a) { alert(a); //undefine a = 2; //全局变量 } fn1(); //调用的时没有传参,函数里的为undefine alert(a); //1
和函数形式一致,调用传参
var a = 1; function fn1(a) { alert(a); //1 a = 2; //全局变量 } fn1(a); //调用的时候传入1 alert(a); //1
自下往上寻找父级变量
var num = 0; function fn1() { num++; } function fn2() { num++; } fn1(); fn2(); alert(num);
取出局部变量
var str = ''; function fn1() { var a = '你好'; str = a; } fn1(); alert(str);
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享