01-ECAM、发展史、JS值、编程语言、变量

一、五大浏览器与其内核(记住)

ie浏览器 trident
Chrome浏览器 webkit --> blink
Safari浏览器 webkit
Firefox gecko
Opera presto

二、浏览器的发展历史

1. 1990年,蒂姆·博纳斯·李

蒂姆博纳斯李是一个分享超文本资讯的人,他开发了一款浏览器world wide web,随后移植到C,改名为libwww(真正意义上的第一个浏览器),随后一系列变迁改为nexus。

2. 1993年(重要的MOSICA浏览器)

美国伊利诺大学NCSA组织,其核心成员马克·安德森开发了一个MOSIAC浏览器。该浏览器可以显示图片。该款浏览器是真正意义上的图形化浏览器。

3. 1994年(Netscape浏览器)

这一年,马克·安德森和吉姆·克拉克成立了MOSIAC communication corporation公司,但是因为商标等问题(商标被转让给了spy glass),改名为Netscape communication corporation。也就是我们熟知的网景公司
随后的网景公司在MOSIAC的基础上开发了一款浏览器netscape navigator,在当时十分流行,一直流行了10年左右。

4. 1996年(极其重要的一年)

4.1 微软收购了spy glass公司,因为spy glass公司有MOSIAC的商标,当然就有MOSIAC的使用权。于是在MOSIAC的基础上开发出IE浏览器。Internet explorer 1.0版本。同年发布了IE3版本,并且发布了JScript脚本语言。由此可知,IE的内核其实MOSIAC内核的升级版。

4.2 网景公司Brendan eich基于Netscape navigator浏览器开发出livescript脚本语言。livescript就是JavaScript的前身。

4.3 Java火起来了,但是网景公司的livescript不温不火。于是网景公司和SUN公司(Java的公司)就商量一起合作推广和宣传产品。于是乎,livescript就更名为JavaScript了。

5. 2001年

5.1 IE6发布,同时将JS引擎诞生,从渲染引擎中剥离出来。
5.2 xp系统诞生。

6. 2003年

Mozilla公司开发了Firefox浏览器,其实就是Netscape navigator搬过来的。(2002年,Netscape开源了)

7. 2008年(极其重要的一年)

Google基于WEBKIT、BLINK、GEARS内核,开发出了Chrome浏览器。同时诞生了V8引擎。(JS引擎)。
V8引擎的厉害之处:
1、直接翻译机器码
2、独立于浏览器运行

8. 2009年

甲骨文公司收购了SUN公司,JS的所有权归甲骨文所有。

三、ECMA(European Computer Manufactures Association,欧洲计算机制造联合会)

  1. 该组织做什么?
    评估、开发、认可电信、计算机标准
  2. ECMA - 262是脚本语言的规范,也称ECMAScript
    我们常见的ES5、ES6也都是规范。

四、编程语言

  1. 解释型语言
    源码 --> 解释器 --> 解释一行就执行一行
  2. 编译型语言
    源码 --> 编译器 --> 机器语言 --> 可执行文件
  3. 脚本语言(解释型语言)
    源码 --> 脚本引擎 --> 解释器
    前端脚本语言:JavaScript(客户端脚本)
    后端脚本语言:php(服务器端脚本)

五、关于其他的前端脚本语言

  1. 前端主流的脚本语言是JavaScript,之前其实还有JScript、VBScript。JScript和VBScript都是微软开发的脚本语言。因为脚本语言需要一个统一的规范,所以就共同遵守ECMA的规范。
  2. 但是JScript的语法基本上都是照抄JavaScript的,所以JScript和JavaScript基本一样。现在JScript已经放弃了。
  3. VBScript之前有用来做桌面程序。也基本没什么人用了。
  4. actionscript,用来开发Adobe flash player的。

六、JavaScript三大块

ECMAScript、DOM(W3C规范)、BOM(没有规范)

七、JavaScript单线程模拟多线程(轮转时间片)

JS引擎是单线程的,这个毫无疑问,那么为什么我们看上去好像能同时执行多个任务呢?因为JS引擎使用了轮转时间片来模拟多线程。
轮转时间片:短时间之内轮流执行多个任务的片段。
1、任务1、任务2、任务3…
2、切分这些任务
3、随机排列这些任务片段,组成队列
4、按照这个队列顺序将这些任务片段送进去JS进程
5、JS进程执行一个又一个的任务片段
因为短时间内执行了很多个任务片段,我们时间很短,我们是看不见卡顿的。

八、JavaScript基础

一个编程语言必须要有变量、数据结构、函数、运算能力等方面。HTML、CSS都没有这些,所以他们是标记性语言。

1.变量
1、普通声明方式:var a = 3;

说明:上面这条语句其实有两个步骤,声明变量a,变量赋值3。其实就像我们买房子,声明变量的时候就是向系统申请了一片存储空间,并且命名为a。赋值就是人住进去了。

2、单一声明方式:一个var声明多个变量。多个变量间用逗号分隔。

var x = 1,
y = 2;

3、命名规范

1、不能以数字开头,可以字母_KaTeX parse error: Expected group after '_' at position 17: …头 2、中间可以使用数组、字母_̲
3、关键字、保留字不能声明为变量的名字
4、注意要语义化、结构化
5、养成良好的规范,使用小驼峰命名法
6、不要使用拼音!很让人讨厌

2. JS的值
1、原始值(基本数据类型):

Number、String、Boolean、undefined、null
扩展一点:JavaScript是根据赋予的值自动来判断数据类型的,是一种动态语言、弱类型语言。
动态语言 -> 脚本语言 -> 解释型语言 -> 弱类型语言
静态语言 -> 编译型语言 -> 强类型语言

2、引用值:

Object、Array、Function、Date、RegExp

3. 原始值和引用值在内存中的存储方式

1、原始值是直接在栈内存中存值,比如var a = 123; 直接就会将栈内存中的某个地址空间放入123,并且声明为a。
2、在内存中的值是不能改变的。如果a被重新赋值,如a = 456,那么在栈内存中原理123的位置的声明a抹去,改回原来的地址序号。然后在其他的序号重新开辟一片空间来放456,并将该空间声明为a。
3、引用数据类型则不一样。引用数据存储在堆内存中。然后在栈的某个地址声明arr1,然后值为arr1的值在堆内存中的地址。
4、所以如果引用类型直接赋值,如var arr2 = arr1;那么是直接将arr1存放数据的堆内存空间地址直接复制一份放到arr2中。所以arr1改变值时,arr2同时也会被改变,因为他们指向同一个堆内存地址。
5、如果arr1 = [1, 2, 3],就是arr1被重新赋值了,那么原来的地址声明就会被抹去,然后开辟一个新的栈内存空间,存放[1, 2, 3] 在堆内存中的地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值