1.1 JavaScript浏览器发展史
1.1.1 web发展史
Mosaic,是互联网历史上第一个获普遍使用和能够显示图片的网页浏览器,于1993年问世。
Netscape Navigator(网景)和Microsoft(微软)基于Mosaic开发Mozilla Firefox和Internet Explorer。
1.1.2 js历史
作者:Brendan Eich
JavaScript作为Netscape Navigator浏览器的一部分首次出现在1996年。最初设计目标是改善网页的用户体验。
起初命名为LiveScript,后因与Sun公司合作和市场宣传,更名为JavaScript,最终被Oracle收购。
1.1.3 浏览器组成
- shell(外壳):用户可见的操作部分。
- 内核:处理代码,显示内容。
- 渲染引擎(语法规则和渲染)
- js引擎
- 其他模块
主流浏览器(占3%市场份额,有自己开发内核):
IE - trident
Chrome - webkit / blink
firefox - Gecko
Opera - presto
Safari - webkit
1.1.4 js历史
- 2001年发布ie6,首先实现对js引擎的优化和分离。
- 2008年Google发布最新浏览器Chrome,采用webkit内核,v8引擎,把js代码直接转化为机械码来执行,进而以速度快而闻名。
- 后Firefox也推出了具备强大功能的js引擎。
- Firefox3.5 TraceMonkey(对频繁执行的代码做了路径优化)
- Firefox4.0 leagerMonkey
1.1.5 js特点
了解翻译方式:
编译性语言:通篇翻译,系统执行翻译后文件。(c c++)
优点:快
不足:移植性不好(不跨平台),c 和 c++ 不能跨平台
解释性语言:翻译一行,执行一行。(php)
优点:跨平台
不足:稍微慢
了解单线程和同步异步:
一个执行体同一时间只能执行一个任务。
- JavaScript是解释性语言 - (不需要编译成文件)跨平台
- JavaScript引擎是单线程
- ECMA标准 - JavaScript兼容与ECMA标准,因此也成为ECMAScript。
(JavaScript = ECMAScript + DOM + BOM)
1.1.6 js执行队列
轮转时间片:将任务分片,转换成时间片,争抢时间片队列,放入js主线程。
1.2 js介绍,入门,js引入,变量,值类型,运算符
1.2.1 js引入
- 页面内嵌<script></script>标签
- 外部引入<script src="location"></script>
同时使用,只外部引入生效。
为符合web标准,结构(html)、样式(css)、行为(js)相分离,通常采用外部引入。
解释url、href、src的区别:
URL:统一资源定位符(Uniform Resource Locator ),互联网标准资源的地址,包括协议+服务器名称+路径+文件名。又分为绝对路径和相对路径。
href:网络资源的位置引用(Hypertext Reference),建立当前元素或文档与锚点或网络资源的链接引用关系,不会停止其他文件和页面的加载。
src:当前资源(Source)引入到当前文档元素定义的位置,暂停页面的加载和处理。
1.2.2 js基本语法
- 变量(variable):存放数据,以便以后使用。
- 变量声明
- 声明、赋值分解
- 单一var(多个变量同时声明)
var a, b, c = 10;
- 命名规则
- 变量名必须以英文字母、_、$开头
- 变量名可以包括英文字母、_、$、数字
- 不可以用系统的关键字、保留字作为变量名
- 变量声明
- 变量中只能存放单一数据,多次赋值会覆盖
- 变量名称遵守命名规则,自觉语义化
- 运算大于赋值的优先级
-
值类型 - 数据类型
- 不可改变的原始值(栈数据 - stack - first in last out)
- Number、String、Boolean、undefined、null
- 引用值(堆数据 - heap)
- array、object、function ... date regexp
- 不可改变的原始值(栈数据 - stack - first in last out)
-
js语句基本规则
- 语句后面用分号结束";"
- js语法错误会引发后续代码终止,但不会影响其他代码块(意为script包裹或引入的代码块,一块一块的执行,并非加载所有后一起执行)
- 书写格式要规范,"= + / -"两边都要有空格
错误分为两种:
- 低级错误(语法解析错误) - 通篇粗略扫描,一句也不会执行
- 逻辑错误(标准错误,情有可原) - 执行到逻辑错误处停止
1.2.3 js运算符
- 运算操作符
- "+"
- 数学运算、字符串连接
- 任何数据类型加字符串都等于字符串
- "-" "*" "/" "%" "=" "()"
- Infinity、-Infinity、NaN
- 优先级"="最弱, "()"优先级最高
- "++" "--" "+=" "-=" "/=" "*=" "%="
- "+"
- 赋值的顺序,自右向左;计算顺序,自左向右
- 先++ 与 后++ 区别,先执行操作后返回,或先返回后执行操作