(function(){
aa();
f2();
var f1 = function aa(){};
function f2(){
alert(1);
}
})();

// 按照代码的执行顺序从上往下而言,在执行到未定义函数时报错 aa()未定义( aa is not defined )报错后就此就会中断,后面代码不在执行
//var f1,function f2(){}; //hoisting,被隐式提升的声明
// 上面代码中函数声明f2被提升,所以在前面调用f2是没问题的。虽然变量f1也被提升,但f1提升后的值为undefined,其真正的初始值是在执行到函数表达式处被赋予的。所以只有声明是被提升的。

// var a = 1;
// function outer(){
// var b = 2;
// function inner(){
// var c = 4;
// console.log(a);
// }
// inner(); //调用inner函数
// }
// outer(); //调用rainman函数

//JavaScript的作用域链
//观察alert(a);这句代码。JavaScript首先在inner函数中查找是否定义了变量a,如果定义了则使用inner函数中的a变量;如果inner函数中没有定义a变量,JavaScript则会继续在onter函数中查找是否定义了a变量,在这段代码中outer函数体内没有定义a变量,则JavaScript引擎会继续向上(全局对象)查找是否定义了a;在全局对象中我们定义了a = 1,因此最终结果会弹出'1'。

//作用域链:JavaScript需要查询一个变量x时,首先会查找作用域链的第一个对象,如果以第一个对象没有定义x变量,JavaScript会继续查找有没有定义x变量,如果第二个对象没有定义则会继续查找,以此类推。

//上面的代码涉及到了三个作用域链对象,依次是:inner、outer、window。

转载于:https://www.cnblogs.com/lrbee/p/6011550.html

对于一些作用域自己的理解,望能帮助某人相关推荐

  1. js作用域及作用域链概念理解及使用

    之前写过一篇JavaScript 闭包究竟是什么的文章理解闭包,觉得写得很清晰,可以简单理解闭包产生原因,但看评论都在说了解了作用域链和活动对象才能真正理解闭包,起初不以为然,后来在跟公司同事交流的时 ...

  2. javascript中函数参数以及函数中局部变量作用域一点点理解

    2019独角兽企业重金招聘Python工程师标准>>> 函数中局部变量如果与外部变量重名,则用的是函数内部局部变量,用完就会被释放.我的理解函数是一个function定义的代码段,以 ...

  3. js 执行环境 活动对象 变量对象 作用域链的理解

    看一下是知乎大神对于 js 执行环境 活动对象 变量对象 作用域链的解释 假设在全局环境下定义了函数pub()和变量pubvar: var pubvar = 1; function pub () {v ...

  4. Kotlin:对let,apply,run,also等作用域函数的理解

    在理解这些函数之前,先从源码中摘抄出相关的代码, 放在一起,方便比较,总结规律(省略了函数的注解和部分代码, 不影响理解,了解这些代码的可以略过) public inline fun <T, R ...

  5. 对javascript作用域链的理解

    这几天学习了一下javascript作用域链,感到这个挺重要的,所以写一篇文章分享一下: 1. 作用域链: 当代码在一个环境中执行时,会创建由变量对象构成的一个作用域链.作用域链的用途是:保证对执行环 ...

  6. 对于python 作用域新的理解

    今天看Python习题,看到如下题目 def num():return [lambda x: i*x for i in range(4)] print([m(2) for m in num()]) # ...

  7. js中变量作用域的小理解

    一:变量作用域 在js代码中每个变量都是有自己的作用域的,js中不像C语言有块级作用域的概念,取而代之的是函数作用域,看如下代码: var scope="global"; func ...

  8. 对作用域、作用域链的理解

    全局作用域和函数作用域 (1)全局作用域 最外层函数和最外层函数外面定义的变量拥有全局作用域 所有未定义直接赋值的变量自动声明为全局作用域 所有window对象的属性拥有全局作用域 全局作用域有很大的 ...

  9. 对request,session,application作用域形象理解

    看到一篇比较有意思的文章,分享一下.原网址:http://blog.csdn.net/rushkid02/article/details/8063792 几乎所有的Web开发语言都支持Session功 ...

最新文章

  1. AAAI 2020论文解读:商汤科技提出新弱监督目标检测框架
  2. 通俗讲java反射机制ioc,结合反射说明SpringIOC的实现原理
  3. 13.8 线程的安全问题和解决方法
  4. UA MATH565C 随机微分方程III Ito积分的构造下
  5. axios基础和封装
  6. 同学录APP开题报告 2017-12-14
  7. VTK:Filtering之ConnectivityFilterDemo
  8. Yii实现分页的两种方法
  9. linux系统内核从3.2.0-100-generic升级到3.13版本
  10. 回溯算法之购物车(0-1 背包问题)
  11. 每日一题(4)—— (a ^ b 2)
  12. 前端进阶之路-利用Jenkins快速打造前端项目自动化工作流
  13. Windows使用批处理文件更改指定目录下的文件名(含序号)
  14. 韩天峰 - Swoole4-全新的PHP编程模式
  15. Traffic Flow Prediction Using Graph Convolution Neural NetworksOC 翻译笔记
  16. 【风马一族_php】NO5_php基础知识_数组
  17. 苹果手机屏幕上的圆点如何设置呢?
  18. jsapi 支付缺少appid ¬ify_url
  19. matlab幼苗识别,基于MATLAB的植物幼苗识别
  20. ANO V7上位机协议程序(新版加入DMA形式发送接收)

热门文章

  1. android中打开pdf,在Android应用程序中打开PDF
  2. mysql 单块读 多块读_dbfilesequentialread等待事件
  3. linux chattr修改文件属性,linux chattr(改变文件属性)
  4. oracle 查看动态性能视图,oracle常用动态性能视图
  5. ajax 隔x秒发送一次,如何使用XAJAX和PHP编写实时聊天?
  6. 中班音乐计算机反思,中班音乐教学反思
  7. 散列表删除一个元素c语言,分享一个简单高效的哈希表C语言实现
  8. linux redis客户端_10个 Linux 顶级开源缓存工具
  9. java xml读取方法_Java读取XML文件的方法
  10. 如何为prel语言加载模块_WebAssembly 系列(第四部分)- 创建和使用WebAssembly模块...