作用域链
 
函数每次执行时,浏览器都会在函数中开启一个地方用来存储函数内的局部数据。(声明在函数内的局部变量),这个地方就叫做作用域([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. selenium2自动化测试学习笔记(四)

    今天是学习selenium2第四天.总结下今天的学习成果,自动登录网易邮箱并写信发送邮件. 知识点or坑点: 1.模块化编写测试模块(类似java里的抽象方法,js的函数编写) from 包名 imp ...

  2. linux小白成长之路9————打包部署SpringBoot项目

    [内容指引] SpringBoot项目介绍: 打包SpringBoot项目: 1.pom.xml: 2.application.properties配置: 3.application-dev.prop ...

  3. django搭建web (五) views.py

    http请求: HttpRequest http响应: HttpResponse 所在位置:django.http isinstance(request,HttpResponse) True-> ...

  4. C实现单链表

    typedef int DataType; typedef struct ListNode { DataType data; struct ListNode* next; }ListNode; //初 ...

  5. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  6. vue内置指令详解——小白速会

    指令 (Directives) 是带有 v- 前缀的特殊属性,职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM. 内置指令 1.v-bind:响应并更新DOM特性:例如:v-bi ...

  7. var、let、const区别

    1.let不存在变量提升,必须升明后才可用. 'use strict'; (function(){ console.log(varTest); console.log(letTest); var va ...

  8. Python内置函数(32)——all

    英文文档: all(iterable) Return True if all elements of the iterable are true (or if the iterable is empt ...

  9. 原生JavaScript实现页面回到顶部的功能

    /*如果想实现点击一个按钮让滚动条回到最顶部的功能,首先可能就会想到它是从底部位置移动到顶部的位置 它是一个运动的过程,只要知道当前位置(current Position)和想要到达的位置(targe ...

  10. Linux上 ps 命令的用法

    ps a 显示现行终端机下的所有程序,包括其他用户的程序.2)ps -A 显示所有程序. 3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示. 4)ps -e 此 ...