一、主流浏览器及其内核

  • IE trident
  • safari webkit
  • chrome webkit/blink/gears
  • opera presto
  • firefox gecko

    二、浏览器和JS的发展史

  • 1990年,蒂姆.伯纳斯.李 在超文本分享的基础上开发出了 world wide web浏览器,后来又将其移植到c,后面更名为libwww/nexus;允许别人浏览他编写的网站

  • 1993年,美国伊利诺大学的 马克.安德森 开发出了MOSIAC浏览器,可以显示图片;第一个图形化浏览器
  • 1994年,马克.安德森和硅图公司的 吉姆.克拉克 两人成立了 MOSIAC communication corporation

    插曲:

    • 马克.安德森离开伊利诺大学后,这个大学将MOSIAC的商标权转让给了 spy glass公司
    • 后来两人有重新成立了 netscape communication corporation;后来在MOSIAC基础上开发出来 netscape navigator浏览器
  • 1996年,微软收购了spy glass,发不了IE1.0;同年发布了IE3.0和JSscript

  • 1996年,网景公司的Brendan Eich,在netscape navigator的基础上开发出来livescript
  • 1996年,JAVA火了,livescript一直不温不火,后来网景公司和SUN公司商量,合作推广宣传产品,livescript更名为JavaScript
  • 2001年,XP系统诞生,微软发布了IE6.0;同年微软还发布了JS引擎
  • 2004年,Mozilla公司发布了firefox浏览器
  • 2008年,google公司在webkit/blink/gears内核的基础上开发出了chrome浏览器

    • chrome浏览器的厉害之处在于V8引擎,这个引擎可以直接读取机器码
    • 同时还可以独立于浏览器运行
  • 2009年,甲骨文oracle公司收购了sun公司,JS的所有权归甲骨文所有

    三:解释型语言和编译型语言

    • ECMA: European Computer Manufactures Association 欧洲计算机制造联合会;主要负责评估、开发、电信认可、计算机标准
    • ECMA262规范: 脚本语言开发规范 ECMAScript
  • 解释型 -> 解释器 -> 机器语言 -> 可执行文件

  • 编译型 -> 编译器 -> 解释一行执行一行 -> 不需要根据不同的平台进行移植
  • 脚本语言: 脚本语言 -> 脚本引擎 -> 解释器

    四、JavaScript的组成

  • ECMAScript: 规定了JS的基础语法,包括变量、数据类型、关键字、保留字、对象、继承、函数

  • DOM: document object model,遵循的是W3C规范
  • BOM: browser object model,没有规范

    五、单线程和多线程

  • JS引擎是单线程的,但是它可以通过轮转时间片来模拟多线程

  • 轮转时间片: 短时间内轮流执行多个任务的片段「单线程模拟多线程」
  • 轮转时间片:
    1. 任务一、任务二
    2. 随机切分任务一,随机切分任务二
    3. 随机排列切分的任务片段,组成队列
    4. 按照这个任务队列将任务队列送进JS进程
    5. JS执行一个又一个任务片段
  • JS代码块引用: 内部引用、外部引用

    六、编程语言所具备的特性

  1. 变量
  2. 数据结构
  3. 函数
  4. 运算能力

    七、JS中的变量

  • 变量: variable,存储数据的一个容器 ```javascript var a; //声明变量 a = 12; //变量赋值

var b = 13; //变量声明和赋值,步骤是先声明变量b,然后创建值13,最后把变量b和13的值关联起来

// 单一变量声明方式 var a, b;

  1. <a name="RMxzq"></a>
  2. # 八、变量的命名规范
  3. - 严格区分大小写
  4. - 由数字、字母、下划线、$组成,但是不能以数字开头
  5. - 不能使用关键字和保留字
  6. - 建议使用小驼峰命名,命名要见名知意,使用有意义英文单词
  7. - 命名要语义化和结构化
  8. ```javascript
  9. js_header J_header j_header
  10. js-header J-header j-header

九、JS中的数据类型

  • 原始值: Number、String、Boolean、null、undefined、symbol、bigInt
  • 引用数据类型: Array、Data、Function、Object、RegExp

原始值和引用数据类型的区别

  • 原始值是存储在栈内存中的,它的数据是永久保存的,不可以更改的,重新赋值是将原来的值拷贝一份
  • 引用数据类型是存储在堆内存中的,重新赋值是指向新的堆内存地址 ```javascript // 原始值类型 var a = 12; var b = a; a = 13; console.log(a, b); // 13 12

// 引用数据类型 var arr1 = [1, 2, 3, 4]; var arr2 = arr1; arr1.push(5);

arr1 = [11, 22, 33, 44]; console.log(arr1, arr2); // [11, 22, 33, 44]; [1, 2, 3, 4, 5] ```