作用域 预解析

作用域

域:空间 范围 区域

作用:读、写

1.script  全局变量 全局函数 自上而下一块执行完毕执行下一块

2.函数  由里到外

浏览器

js解析器

1.找一些东西:根据关键字 var function  参数

a=未定义

所有的变量,在代码正式运行之前,都提前赋了一个值:未定义

fn1=function fn1(){alert(2);}

  所有的函数,在代码正式运行之前,都是整个函数块

  JS预解析(形成一个仓库)

  注:遇到重名的,只留一个

    变量和函数重名了,就只留下函数

例1:

var a=1;

function fn1(){

  alert(a);   //undefined  函数作用域

  var a=2;

}

fn1();

alert(a);  // 1

例2

var a=1;

function fn1(){

  alert(a);   //1

  a=2;

}

fn1();

alert(a);  // 2

2.逐行解读代码

 表达式:=  + - * / % ! ++ -- 参数     能够改变值的动作

 表达式可以改预解析的值

alert(a);  //function a(){alert(4);}

var a=1;

alert(a);   //1

function a(){alert(2);}

alert(a);   //1

var a=3;   //3

alert(a);

function a(){alert(4);}

alert(a);

a();    //报错

时间: 2024-10-31 10:03:27

作用域 预解析的相关文章

JavaScript预解析

1 预解析 1.1 预解析的基本步骤 在JS引擎执行JS代码会分成三个步骤进行解析代码: 第一步:JS引擎先将JS代码整体按照JS语言的规则进行分词,也就是JS代码的词法分析. 第二步:然后JS引擎浏览JS代码,并对代码进行语法分析,这里只关注代码中变量的声明和函数的声明,这第二步也就叫预解析. 第三步:从上往下,从左到右的执行代码. 第一和第二步都是在执行代码前JS引擎内部执行的过程,尤其是第二步预解析的过程对JS代码的执行顺序有着极其重要的影响. 而对于变量的声明和函数的声明,这两种声明在执

javascript预解析和作用域

JavaScript解析过程分为两个阶段: 一是:编译阶段.就是JavaScrip预解析阶段,在这个阶段JavaScript解析器将完成把JavaScript脚本代码转换到字节码; 二是:执行阶段.在编译阶段JavaScript解析器借助执行环境把字节码生成机械码,并顺序执行; 预解析:在当前的作用域中,js代码执行之前浏览器会默认把所有带var 和function的进行提前的声明或者定义; eg:var num=1; sum(); function sum(){console.log(num)

关于作用域和预解析的不常见重要知识

作用域和预解析 在javascript中作用域是非常重要的,本文章将会说明作用域,如果有不足的地方希望大家可以评论指出来,自己一定会及时的改正错误,避免大家走入一些误区. 谈及作用域先就必须要说明预解析和词法作用域. 下面我们先说明一下: 预解析 代码在正常执行操作之前会对文档进行一次解析,这个操作就是将声明提升, 声明包括全局范围内  1.带有var的变量, 2.函数 文档预解析后会把文档中在全局函数中的内容储存起来,将全局中带有var的变量(var和变量名,注意:变量体不会随着提升,加载va

JS(数据类型、预解析、闭包、作用域、this)

1.数据类型的区别 基本数据类型:number.string.boolean.null.undefined 引用数据类型: 1-1:对象数据类型:Object.Array.Date.Regexp.String.Boolean等 1-2:函数数据类型function2.预解析(变量提升) 在当前作用域中.JS从上到下执行.首先把带var和function关键字的进行声明和定义 2-1:声明(declare):var num = 12; 在预解释状态为 var num = undefined; 2-

JS作用域概念-预解析规则

// 作用域: // 域:空间.范围.区域…… // 作用:读.写 script 全局变量.全局函数 自上而下 函数 由里到外 {} 浏览器: “JS解析器” 1)“找一些东西” :var function 参数 a = ... 所有的变量,在正式运行代码之前,都提前赋了一个值:未定义 fn1 = function fn1(){ alert(2); } 所有的函数,在正式运行代码之前,都是整个函数块 JS 的预解析 遇到重名的:只留一个 变量和函数重名了,就只留下函数 2)逐行解读代码: 表达式

javascript里面的闭包,作用域,预解析

函数的作用域 1.全局变量=公用卫生间 2.局部变量=次卧卫生间      局部变量 全局无法使用      局部声明变量不加var的话就变成全局变量(不推荐使用) 3.闭包=次卧的可以用自己的卫生间,也可以用公用卫生间: 预解析 1.先把变量声明 全部提前,赋值不动 2.函数也有预解析,直接提前   3.预解析 不会脱离函数作用域,也不会冲出script标签 最多提到自己标签的顶部 代码执行顺序 见一个srcipt解析执行一个,执行完了 在执行下一个 案例1:      alert(a);  

第06课:作用域、JS预解析机制

从字面上理解----域就是空间.范围.区域,作用就是读.写,所以作用域我们可以简单理解为:在什么样空间或者范围内对数据进行什么样的读或写操作. 看一下代码 alert(a); // 为什么是undefined var a = 1; alert(a); //为什么浏览器无反应 a = 1; 要了解为什么这些现象必须先知道浏览器是如何读取js代码,而这段浏览器专门用来读取js代码的片段我们称之为-----js解析器  首先,我们来理解“JS解析器”是如何工作的? 先看如下代码 alert(a); /

关于js语法中的一些难点(预解析,变量提前,作用域)

******标题很吓人************ 其实就是一个小例子 ,从例子中浅析 这些知识点 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>关于js中的那些小知识点</title> </head> <body> </body> <script> var a=1; function zero

JavaScript函数之作用域 / 作用链域 / 预解析

关于作用域和作用链域的问题,很多文章讲的都很详细,本文属于摘录自己觉得对自己有价值的部分,留由后用,仅供参考,需要查看详细信息请点击我给出的原文链接查看原文件 做一个有爱的搬运工~~ ------------------------------------------------------------------------------------------------------------------------------------------- 作用域 js中作用域只有一种,就是函