关于js的执行原理,除去html页面中直接添加的代码,js代码的放置可以分为两类。

//情形a
           <script type="text/javascript" src="xxx.js"$amp;>amp;$lt;/script>
           //情形b 
           <script type="text/javascript">
           code......
          </script>

(1)a中的js代码和b中js的代码都是代码段,引入一个js文件就是引入一个代码段。一个script闭标签里面夹的一个也是一个代码段。当页面载入时,这些代码段都是按照自上而下的顺序执行的,也就是说,执行完上一个代码段

才会去执行下一个代码段。

(2)每个代码段执行的顺序是相同的,

检查语法--》预编译--》最后执行

一个函数重名问题,同一页文件中和独立js文件中的区别

  //代码段1开始
  function a(){
  alert(1);
  }
  var f1=a;//保存a
  //代码段1结束
  //代码段2开始
  function a(){
  alert(2);
  }
  var f2=a;//保存a

f2();

//代码段2结束

window.onload=function(){
  f1();

如果把这两个函数写在同一个js文件里面, 后面的会覆盖前面的一个。但是如果分别写在两个js文件里面。不会覆盖.。第一段代码在当前的环境中找到了function a(){alert(1);}所以就把这个函数保存在f1中,第二段代码时全局

之前的函数a被覆盖。是新的a函数。但是由于之前的f1已经保存的是原来的函数,所以f1无法改变。假设,这个时候在后面再添加一个js文件,引用a函数,输出结果还是2。

如果所有的代码放在一块,在预解析阶段,后面的函数会把前面的给覆盖。

关于js预编译以及js文件执行顺序的几个问题。的更多相关文章

  1. Handlebars.js 预编译(转)

    Handlebars.js 官网上对预编译1是这样说的: 你需要安装 Node.js 你需要在全局环境中,通过 Npm 安装 handlebars 包 然后你就可以通过命令预编译你的 handleba ...

  2. js预编译

    先来做三个测试 eg1: var a; a = 1; function a() {}; console.log(a); eg2: var a; function a() {}; console.log ...

  3. JS预编译详解

    我们都知道javascript是解释型语言,执行的特点呢是编译一行,执行一行.按照这个思路有时候我们在运行代码时会有一些令人费解的现象出现.下面我们一起来执行下面三段代码. <script> ...

  4. js预编译的四部曲

    众所周知javascript是解释性语言,主要特点为解释一行执行一行. 而在js运行时会进行三件事:1语法分析  2.预编译  3.解释执行 语法分析会在代码执行前对代码进行通篇检查,以排除一些低级错 ...

  5. 热重载 预编译 编译器 JS引擎 作用域

    热重载就是页面每次改动,不需要手动去刷新,可自动刷新.保持vuex的状态. JS之预编译 JavaScript的预编译 编译器 JS引擎 作用域三者之间的关系 建议你先去看看你不知道的JavaScri ...

  6. JS预编译过程

    GO和AO 变量的预编译 实例1 console.log(a); var a=1; console.log(a); 实际编译过程: 将a存入预编译对象中,赋值为undefined: 真正的赋值语句当程 ...

  7. 【总结】/etc/rc.d/rc.local 与 /etc/profile .bash_profile .bashrc 文件执行顺序

    登陆shell与交互式非登陆shell的区别 登录shell 所谓登录shell,指的是当用户登录系统时所取的那个 shell.登录shell属于交互式shell. 登录shell将查找4个不同的启动 ...

  8. js预编译和函数执行

    javascript 执行过程 1.语法检测(有没有基本的语法错误,例如中文,关键字错误...)2.词法分析(预编译) (1)创建全局GO(global object)对象 (2)对var声明的变量进 ...

  9. js 预编译

    js 运行代码的时候分为几个步骤:语法分析 ==>预编译  ==>解释执行 语法解析:通篇扫描代码,查看语法是否出错 解释执行:读一行 - 解释一行 - 执行一行 预编译执行的操作: // ...

随机推荐

  1. 国内最全最详细的hadoop2.2.0集群的HA高可靠的最简单配置

    简介 hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作.在hadoop1时代,只有一个NameNode.如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了 ...

  2. android绘制view的过程

    1 android绘制view的过程简单描述  简单描述可以解释为:计算大小(measure),布局坐标计算(layout),绘制到屏幕(draw):            下面看看每一步的动作到底是 ...

  3. Android 播放在线视频

    首先开启电脑上的tomcat,将视频文件放在Tomcat 7.0\webapps\ROOT中 不用修改代码,直接输入地址即可,运行如下: 播放在线视频,必须要求手机支持当前的格式,才可以播放 播放的原 ...

  4. Android性能优化的浅谈

    一.概要: 本文主要以Android的渲染机制.UI优化.多线程的处理.缓存处理.电量优化以及代码规范等几方面来简述Android的性能优化 二.渲染机制的优化: 大多数用户感知到的卡顿等性能问题的最 ...

  5. 【代码笔记】iOS-城市plist

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  6. zend studio 使用总结

    1 修改中文字体打开zend studio -> Window -> Preferences -> General -> Apperance -> Colors and ...

  7. 1.3 基础知识——GP2.1 方针(Policy)

    摘要: 方针这个GP每个PA都有,其实CMMI实践有没有实在价值,就在于方针!如果我们做出来的CMMI实践仅仅就是写文档.多步骤.没事找事,那其实就是违背了公司的商业目标,公司的商业目标简单说就是:用 ...

  8. mac 远程连接服务器

    很多刚用mac的同学 可能会纠结,连接远程服务器咋整? 有没有类型windows上的securecrt 其实,完全可以不用: mac自带的终端就可以搞定:终端terminal 如何连接远程服务器? s ...

  9. mysql 5.5多实例部署【图解】

    mysql5.5数据库多实例部署,我们可以分以下几个步骤来完成. 1. mysql多实例的原理 2. mysql多实例的特点 3. mysql多实例应用场景 4. mysql5.5多实例部署方法 一. ...

  10. spring filter过滤器

    1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 ...