5大浏览器的内核
- IE ——->
trident
- Chrome —->
webkit---> blink
- Safari ——->
webkit
- Firefox ——>
gecko
- Opera ——->
presto--->webkit--->blink
浏览器的历史与JS的诞生
- 1990年
- 蒂姆 伯纳斯 李,通过超文本分享资讯,他开发了一个叫做 world wide web,并且移植到C语言上,更名为libwww/nexus,已经可以实现允许他人浏览他编写的网站,此时可以称作真正的浏览器。
- 1993年
- 在美国伊利诺大学,NCSA组织的(马克安德森),开发了MOSIAC浏览器,这时已经可以显示图片,成为图形化浏览器
- 1994年
- 马克安德森与硅图SGI的吉姆克拉克成立了MOSIAC communication corporation,由于商标权,MOSICA的商标权属于伊利诺大学并且转给了 spy glasss公司,所以他们更名为Netscape communication corporation
- 也就是后来的网景公司
- 网景公司开发了netscape navigator流行了十年左右,直到2003年
- 1996年
- 微软公司收购spy glass
- 通过MOSIAC开发出IE,internet explorer 1.0
- 在同一年发布了IE3,与脚本_JScript_
- 网景公司Brendan eich在NETSCAPE NAVIGATOR,开发出来livescript。这个时候js是没有单独的引擎的,脚本的性能非常低
- JAVA火起来了之后,网景公司与java所有方SUN公司合作推广宣传产品,
- livescript更名为—–>javascript
- 2001年
- IE6 XP 诞生,JS引擎出现
- 2003年
- mozilla公司,开发了firefox -> netscape navigator
- 2008年
- google 基于 WEBKIT BLINK GEARS
- 开发出chrome浏览器
- v8引擎
- javascript引擎
- v8引擎直接翻译机器码
- 独立于浏览器运行
- 2009年
- 甲骨文oracle收购SUN公司,JS的所有权归于甲骨文
ECMA
European Computer Manufactures Association
:欧洲计算机制造联合会- ECMA 评估、开发、认可电信、计算机标准
- ECMA-262—> ECMAScript 脚本语言的规范
轮转时间片实现单线程的JavaScript模拟多线程
js通过轮转时间片模拟多线程,即短时间内轮流执行多个任务的片段
执行任务1,任务2
切分任务1,任务2
随机排列这些任务片段,组成队列
按照排列这些队列顺序将任务片段送进JS进程
JS线程执行一个又一个的任务片段
变量
JS中使用var(variable)声明变量
1
2
3var a; // 变量声明
a = 3; // 变量赋值
var a = 3; // 变量赋值命名规范
不能以数字开头
能以字母,_ $ 开头
不能使用关键字 保留字
命名要有语义化
jS数据类型
原始值:
Number
、String
、Boolean
、undefined
、null
引用类型:object
、array
、function
、date
、RegExp
原始值存储在栈内存中,当声明一个变量a,赋值为1时,会在栈内存中开辟一块空间命名为a,值保存的是1
当给a再次赋值为3时,会重新开辟一块空间a,保存值变为3
原本保存1的空间并不会删除,所以js中原始值无法删除
引用类型,在栈内存中保存的是一个地址,这个地址是变量值在堆内存中的地址
所以当复制一个引用类型时,会在栈内存中复制一份引用类型的地址,两个变量存储的地址都指向的是在堆内存保存的一个值
所以这时如果通过其中一个变量修改这个引用类型,那么两个变量的值都会改变,例如
1 |
|