一.五大主流浏览器及内核

IE trident
chorme webkit blink
safari webkit
firefox gecko /ˈɡekəʊ/
opera presto (opera 12.17及更早版本使用的内核,现已停止开发并废弃,
首次使用2007年 opera 7版本中)
opera现已改用 google chorme 内核 blink

二.浏览器的历史和JS诞生

  1. 1990年
    1. 蒂姆 伯纳斯 李 于 欧洲核子物理实验室 创建 WorldWideWeb,
    2. 后将其移植到c , 改名为 nexus ,允许别人浏览他人的网站


  1. 1993年

    1. 美国 伊利诺大学 NCSA组织的 (马克 安德森)
    2. MOSICA浏览器 => 可以显示图片 图形化浏览器
  2. 1994年

    1. 马克 安德森 和 吉姆 克拉克 (SGI硅图公司创始人) 一起建立MOSIA communication corporation 公司
    2. 因MOSIA 版权属于伊利诺大学 => 转让给spy glass公司
    3. 为了避免和NCSA商标拥有权问题,随后创建了Netscape communication corporation 公司(网景公司)
    4. 并开发了 NetScape Navigator(网景导航者)
  3. 1996年

    1. 微软公司收购了 spy glass公司
    2. 随后发布了 IE internet explorer 1.0
    3. IE3 发布出现了 Jscript
    4. 网景公司 Brendan eich 在Netscape Navigator 开发除了 liveScript
    5. java 火起来了,而liveScript不温不火
    6. 随后和SUN公司合作推广,liveScript 改名为 javaScript
  4. 2001年

    1. IE6 WIndowsXP 诞生
    2. JS引擎
  5. 2003年

    1. mozilla 公司 firefox浏览器 => NetScape Navgatior 基础上改的
  6. 2008年

    1. google公司 基于webkit blink
    2. 开发出 Chorme => v8引擎 => JS引擎
      1. 直接翻译机器码
      2. 独立于浏览器运行
  7. 2009年

    1. 甲骨文公司 oracle 收购SUN公司
    2. JS 所有权属于甲骨文公司

三.ECMA

European Computer Manufactures Assocation
欧洲计算机制造联合会
负责评估开发认证电信计算机标准

ECMA-262 脚本语言的规范 ECMAScript

四.编程语言

计算机只能理解1和0

  1. 编译型
    1. 源码 => 编译器 => 机器语言 => 可执行的文件
  2. 解释型
    1. 源码 => 解释器 => 解释一行执行一行
    2. 解释性语言 不需要根据不同的系统平台进行移植

五.脚本语言

脚本引擎 => 解释器
前端: javaScript 客户端脚本
后端: php 服务端脚本

六.JavaScript

  1. ECMAScript

语法,变量,关键字,保留字,值,原始类型,应用类型,对象,继承,函数

  1. DOM document object model W3c规范
  2. BOM borwser object model 没有规范
  3. JS引擎 单线程

    1. 可以模拟单线程 => 轮转时间片
    2. 短时间之内轮流执行多个任务的片段
    • 任务1 任务2
    • 切分任务1 ,2
    • 随机排列这些片段,组成队列
    • 按照这个队列顺序将任务片段送进Js进程``
    • JS线程执行一个又一个的任务片段
  4. 编程语言:

    变量,数据结构,函数,运算

js文件的引入
1.外部引入

  1. <script type="text/javascript" src="js/index.js">
  2. 这里写代码不会被执行
  3. </script>

2.内部引入

  1. <script type="text/javascript">
  2. 内部代码会被执行
  3. </script>

七.变量

变量 => 容器 => 用来存储数据,以便后续使用

  1. // var => varible
  2. var a; // 声明变量
  3. a = 3; // 变量赋值
  4. var a = 3; 变量声明赋值
  5. 1. 声明变量
  6. 2. 变量赋值
  7. // 声明多个变量
  8. var x = 1,
  9. y = 2;
  10. var z = x + y; // z = 3
  11. // 运算 > 赋值

变量的命名规范

  1. 不能以数字开头,
  2. 字母_$开头,
  3. 可以包含 字母_$数字
  4. 关键字 保留字
  5. 语义化 结构化
  6. 小驼峰
  7. myEnglishName

八.JS的值

1.原始值 => 基本类型

  1. // Number String Boolean undefined null
  2. // 1.Number
  3. var a = 1;
  4. var a = 3.14;
  5. // 浮点型 和 整数型 都是数据类型
  6. // 2. String
  7. var str = 'i like js'; // 单引号双引号之间都是字符串类型
  8. // 3. Boolean 布尔值类型 true false
  9. var a = false;
  10. document.write(a);
  11. // 4. undefinded
  12. var a;
  13. document.write(a);
  14. // 5. null 空值,初始化组件,函数,销毁函数,占位

2.引用值

  1. object
  2. Array
  3. function
  4. date
  5. reg

动态语言 => 脚本语言 => 解释型语言 => 弱类型语言
静态语言 => 编译型语言 => 强类型语言

3. 内置类型

Javascript内置七种类型:

  • null 空值
  • undefined
  • boolean
  • number
  • string
  • object
  • Symbol (ES6新增下)

九.栈内存(Stack) 和 堆内存(Heap)

1.栈内存(Stack)

  1. 原始值存储在栈内存中
  2. 原始值是不可改变的
  3. 重新赋值,是重新开辟了一个新的空间,存储了数据原有对应的变量没有了,但是原始的数据还在

    2.堆内存(Heap)

  4. 引用值的地址存储在栈内存中,而引用值存储在堆内存中

  5. 引用值通过变量名获得地址,从而访问到引用值
  6. 把一个引用值赋值给另一个变量,实际上就是把这个引用值在堆内存中地址赋给了变量

1.发展史,ECMA,编程语言,变量,JS值 - 图1