zoukankan      html  css  js  c++  java
  • js 的作用域 域解析 分析

    作用域链
     
    函数每次执行时,浏览器都会在函数中开启一个地方用来存储函数内的局部数据。(声明在函数内的局部变量),这个地方就叫做作用域([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 如果当前的定时器还在开启,我们就不开启新的。
  • 相关阅读:
    POJ 3211 (分组01背包) Washing Clothes
    CodeForces 489D Unbearable Controversy of Being
    CodeForces 489C (贪心) Given Length and Sum of Digits...
    CodeForces 489B (贪心 或 最大匹配) BerSU Ball
    CodeForces 489A (瞎搞) SwapSort
    CodeForces 474.D Flowers
    UVa 1252 (状压DP + 记忆化搜索) Twenty Questions
    UVa 10817 (状压DP + 记忆化搜索) Headmaster's Headache
    【读书笔记】莫比乌斯函数与莫比乌斯反演
    UVa 11437 (梅涅劳斯定理) Triangle Fun
  • 原文地址:https://www.cnblogs.com/YinWeiBlog/p/7442157.html
Copyright © 2011-2022 走看看