作用域链
 
函数每次执行时,浏览器都会在函数中开启一个地方用来存储函数内的局部数据。(声明在函数内的局部变量),这个地方就叫做作用域([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. attr与prop html与text

  2. 云计算--网络原理与应用--20171123--网络地址转换NAT

    NAT的概述 NAT的配置 实验 一. NAT的概述 NAT(Network address translation,网络地址转换)通过将内部网络的的私有地址翻译成全球唯一的共有网络IP地址,是内部网 ...

  3. 2018上C语言程序设计(高级)作业- 第0次作业

    准备工作(10分) 1.在博客园申请个人博客. 2.加入班级博客(2班班级博客链接地址)(1班班级博客链接地址) 3.关注邹欣老师博客.关注任课老师博客. 4.加入讨论小组,学习过程中遇到问题不要随意 ...

  4. Beta版本敏捷冲刺每日报告——Day1

    1.情况简述 Beta阶段第一次Scrum Meeting 敏捷开发起止时间 2017.11.2 08:00 -- 2017.11.2 21:00 讨论时间地点 2017.11.2晚6:00,软工所实 ...

  5. 个人作业2——NBA 2k18案例分析

    产品:篮球体育类游戏NBA 2k18 选择理由:这款游戏是<NBA 2k>的正统续作,自己和身边的朋友都对篮球比较感兴趣,经常看NBA,所以近几年的版本都有购买下载,加上游戏中人物动作比较 ...

  6. OVS常用命令

    添加brideg: sudo ovs-vsctl add-br br0 删除brideg: sudo ovs-vsctl del-br br0 显示bridge: sudo ovs-vsctl sho ...

  7. 学生ID查询

    var http = require("http"); var server = http.createServer(function(req,res){ //得到url var ...

  8. CPP链表示例

    #include<iostream> #include<stdlib.h> using namespace std; typedef struct Student_data { ...

  9. mahony互补滤波器C编程

    //gx...分别为重力加速度在三个轴向的分力 由加速度计测得 //ax...分别为角速度在三个轴向的角速度 由陀螺仪测得 //最后得到最终滤波完毕的x.y.z方向的角度值(°) void IMUup ...

  10. DenseNet

    特点: dense shortcut connections 结构: DenseNet 是一种具有密集连接的卷积神经网络.在该网络中,任何两层之间都有直接的连接,也就是说,网络每一层的输入都是前面所有 ...