日期:2014-05-16  浏览次数:20329 次

JavaScript 执行原理浅析



                   

/*最近在看公司的代码,发现公司的前端主要功能都是由js实现的。以前觉得js只是开发html采用的,始终抱有一种轻视之心。了解之后才发现js也是十分强大的.*/


一、JS是什么?

JavaScript是一种动态、弱类型、基于原型的语言,通过浏览器可以直接执行通过这段话我们得到一下两个信息

第一 JavaScript 是一种语言,既然是语言那么功能必然强大,不可有轻视之心。(目前国内的ATM终端,基本都是靠js操作的)

第二 javaScript是通过浏览器执行的,浏览器之于javaScript 如同JVM之于JAVA。


二、 JS是如何执行的?


因为JS作为脚本语言嵌入在HTML中,要想了解JS的执行方式,首先要知道HTML文件是如何执行的。

当我们在浏览器中输入 http://xxx.xxx.com/index.html,点击提交之后。浏览器会向服务器发送请求报文,服务器收到把被请求的“index.html”文件返回给浏览器。

浏览器加载“index.html”文件,解析HTML标签,根据标签完成相应的动作(如:IMG、SRC等时,向服务器请求相应资源。) 然后显示在浏览器窗口中。

以下是一个从网上摘抄的例子,明白了的同学可以直接跳过

首先客户端发送请求:http://localhost:8080/index.html。实际上发送的数据是:
GET /index.html HTTP/1.1
Accept: **
Referer: http://localhost:8080/index.html
Accept-Language: en,zh-cn;q=0.5
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (MSIE 7.0; MSIE 7.0; Windows NT 5.1; InfoPath.1)
Host: localhost:8080
Connection: Keep-Alive
服务端把图片在发送给客户端。
然后当他解析到新的特殊标签<img 的时候,再次发送请求:
GET /images/logo.gif HTTP/1.1
Accept: */*
Referer: http://localhost:8080/index.html
Accept-Language: en,zh-cn;q=0.5
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (MSIE 7.0; MSIE 7.0; Windows NT 5.1; InfoPath.1)
Host: localhost:8080
Connection: Keep-Alive
服务端把图片在发送给客户端。

当浏览器遇到<script> 标记的时候,浏览器会执行之间的ja