前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航

JavaScript作用域分析总结

首页
2017-01-10 12:50:43
Front-End
JavaScript作用域

原文链接 http://blog.poetries.top/2017/01/10/js-scope

# 一、JS解析顺序和作用域:

  • 解析顺序:
    • 定义(先找var function)
    • 执行 ( 在逐步执行 )
    • 注意:如果函数名和var定义的变量相同,var会被函数覆盖
  • 作用域:
    • 每个script是一个作用域
    • 每个函数{}是一个作用域
    • 程序每执行到一个作用域,都是按照解析顺序解析代码;
    • 作用域链:从内往外找要找函数内的变量;

# 二、案例分析


  • 分析前请记住这段话

    • 解析顺序:
      • 定义(先找var function)
      • 执行 ( 在逐步执行 )
      • 注意:如果函数名和var定义的变量相同,var会被函数覆盖
  • 举例1

alert( a );
var a = 10;
alert( a );
function a(){alert(20)};
alert( a );
var a = 30;
alert( a );
function a(){alert(40)};
alert( a );
// 函数块 10 10 30 30
@前端进阶之旅: 代码已经复制到剪贴板

分析

  • 1:找定义 function a(){alert(40)};

  • 2:执行 alert( a ) //函数块 a = 10; alert( a ); // 10 alert( a ); // 10 a = 30; alert( a ); // 30 alert( a ); // 30

  • 举例2

a();
var a = function(){alert( 1 );}
a();
function a(){alert(2);}
a();
var a = function(){alert(3);}
a();
//2 1 1 3
@前端进阶之旅: 代码已经复制到剪贴板

分析

  • 1:找定义 function a(){alert(2);}

  • 2:执行 a(); //2 a = function(){alert( 1 );} a(); //1 a(); //1 a = function b(){alert(3);}; a();//3

  • 举例3

fe
  • 一、JS解析顺序和作用域:
  • 二、案例分析
  • 三、闭包
    • 3.1 概念
    • 3.2 例子

← JavaScript运动框架之速度时间版本HTML5中的视频音频使用详解 →