作用域链
 
函数每次执行时,浏览器都会在函数中开启一个地方用来存储函数内的局部数据。(声明在函数内的局部变量),这个地方就叫做作用域([scopes])
 
作用域链
变量与函数的查找规则:当我们在函数使用一条数据时,优先在本作用域(调用数据的函数内),去查找这条数据,如果在本作用域,,找不到这条数据,就去查找父级的作用域,直到找到全局作用域,如果在全局作用域下也找不到,就报错。
 
全局作用域 --- 在任何地方都能访问
函数外定义的变量拥有全局作用域
不使用var定义的变量拥有全局作用域
所有window对象上的属性拥有全局作用域
没有声明在任何函数内部的函数拥有全局作用域
 
##域解析
 
js在解析代码时,时一行一行从上向下执行的。何时得到undenfined,变量声明
何时得到undenfined:
1 定义了一条数据,但是数据没有赋值的时候,得到的结果时undenfined。
2 调用对象属性,但是对象上并没有这个属性的时候。
何时得到null
1 null通常出现在找不到元素的时候,(通常出现在找不到对象的时候)。
 
域解析:当浏览器读到一个script标签(或者函数时)时,就开始执行域解析:
快速浏览这个代码块:
1 如果碰到var 就将变量声明提到代码块的最前边。
2 如果碰到了function,就把整体提到代码块最前面紧跟var。
 
 
在赋值操作中保存时函数的执行结果(函数返回值)
 
 
 
###定时器
 
1 setInterval(函数fn,间隔时间);间隔多长时间重复执行某件事情。
返回值:定时器编号;
2 setTimeout(函数fn,延迟时间 )多长时间之后执行什么事情,只执行一次。
返回值:定时器编号;
 
setTimeout(fn,延迟时间); 多长时间之后,执行什么事情(只做一次)
返回值:定时器编号
 
什么时候使用定时器
当需要隔一段时间重复执行一段代码时用 setInterval()
当需要延迟一段时间执行一段代码时用 setTimeout()
 
定时器清除 当定时器不在需要时要关闭
1 clearInterval(定时器编号)
2 clearTimeout(定时器编号)
当定时器不在需要的时候,一定记得关闭
 
定时器管理:
1 每次开启定时器之前,先清除,在开启。
2 如果当前的定时器还在开启,我们就不开启新的。

js 的作用域 域解析 分析的更多相关文章

  1. js 函数 作用域 全局作用域 局部作用域 闭包

    一个变量没有声明但调用 直接报错,声明没有赋值会显示未定义. 作用域 作用域(scope):一条数据可以在哪个范围中使用. 通常来说,一段程序代码中所用到的数据并不总是有效/可用的,而限定这个数据的可 ...

  2. JS作用域及域解析规则

    1.JS作用域:变量和函数作用的范围. 2.JS解析器可以分为域解析和逐行解读代码两个过程. 域解析:1.当进行域解析的时候,一旦找到var,就会提取后面的变量名,并给它赋值给undefined. 2 ...

  3. JavaScript中作用域和作用域链解析

    学习js,肯定要学习作用域,js作用域和其他的主流语言的作用域还存在很大的区别. 一.js没有块级作用域. js没有块级作用域,就像这样: if(){ : console.log(a) //输出100 ...

  4. js词法作用域

    作用域链和原型链是JS中比较重要的2个概念, JS的是函数作用域,与C之类语言的块级作用域不同 JS的作用域还是词法作用域,或者叫静态作用域,作用域链是在语法解析时就完成的,而不是在执行时创建. 例子 ...

  5. 浅谈js变量作用域

    变量的作用域也是前端面试题常考的一个问题,掌握下面几个规律可以帮你更好的理解js的作用域. 1.作用域优先级遵循就近原则,函数内部的作用域优先级大于外部 var a=456; var b=111; f ...

  6. JS之作用域与闭包

    JS之作用域与闭包   作用域在JS中同样也是一个重要的概念.它不复杂,因为ES5中只有全局作用域和函数作用域,我们都知道他没有块级作用域.但在ES6中多了一个let,他可以保证外层块不受内层块的影响 ...

  7. JS JSOP跨域请求实例详解

    JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题.这篇文章主要介绍了JS JSOP跨域请求实例详解的相关资料,需要的朋友可以参考下 ...

  8. js的作用域与作用域链

    JavaScript的作用域和作用域链.在初学JavaScript时,觉得它就和其他语言没啥区别,尤其是作用域这块,想当然的以为“全局变量就是在整个程序的任何地方都可以访问,也就是写在函数外的变量,局 ...

  9. [Python自学] day-16 (JS、作用域、DOM、事件)

    一.JS中的三种函数 1.普通函数 function func(){ console.log("Hello World"); } func() 2.匿名函数 setInterval ...

随机推荐

  1. 如何在win10查看wifi密码

    tep1 找到wifi图标 step 2 右键点击打开网络共享中心 没有啦!!

  2. GLES2学习VBO和VAO的使用

    在GLES2中使用VBO和VAO对象,已经简单vs,ps绘制一个三角形. 1. 初始化操作代码,创建VBO.VAO,编译和链接shader program. void DebugApplication ...

  3. New UWP Community Toolkit - Staggered panel

    概述 前面 New UWP Community Toolkit 文章中,我们对 2.2.0 版本的重要更新做了简单回顾,其中简单介绍了 Staggered panel,本篇我们结合代码详细讲解  St ...

  4. Java基础学习笔记二十一 多线程

    多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线 ...

  5. 网络1711班 C语言第四次作业批改总结

    网络1711班 C语言第四次作业批改总结 助教有话说(写在前面) 近来,有同学跟老师和助教们反映:博客作业太多太麻烦,而且对编程能力提高似乎没什么帮助?在这里我要谈一谈我的感想. 博客作业的意义? 首 ...

  6. 第七次作业:Beta阶段综合报告(Java-Team)

    团队:Java-Team 成员: 章辉宇(284) 吴政楠(286) 陈阳(PM:288) 韩华颂(142) 胡志权(143) github地址:https://github.com/WHUSE201 ...

  7. 关于安装win7系统时出现0x0000007b电脑蓝屏代码的问题

    问题解析: 0X0000007B 这个错误网上都说是sata硬盘的什么引导模式的原因引起. 在网上查找了很久,大概引起错误的原因就是:sata和ide两种模式不同,前者可以装win7系统,后者是xp系 ...

  8. 2017 清北济南考前刷题Day 3 afternoon

    期望得分:100+40+100=240 实际得分:100+40+100=240 将每个联通块的贡献乘起来就是答案 如果一个联通块的边数>点数 ,那么无解 如果边数=点数,那么贡献是 2 如果边数 ...

  9. nyoj Color the fence

    Color the fence 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 Tom has fallen in love with Mary. Now Tom w ...

  10. sublime的使用技巧

    ctr+shift+d是复制当前行当下一行2.使用Sublime text 3 编写代码是一种享受,使用Sublime text 3 格式化HTML代码,需要安装插件,具体安装步骤如下:1.打开菜单- ...