Skip to content

什么是 JS

JavaScript是一种轻量级,高级的编程语言,广泛应用于Web开发中.

JavaScript(简称JS)最初设计的目的是作为浏览器中的脚本语言,用来增强网页的交互性.随着技术的发展,JavaScript的应用已经远远超出了浏览器的范围,现在它也被用于服务器端编程(如Node.js),移动应用开发(React Native),桌面应用开发(Electron)等众多领域.

以下是JavaScript的一些主要特点:

  • 解释型或即时编译型:JavaScript代码在运行时被解释或编译,这使得它能够快速地在不同平台上运行
  • 函数优先:在JavaScript中,函数是一等公民,这意味着函数可以像其他对象一样被传递和操作
  • 事件驱动:JavaScript支持事件驱动的编程模型,这使得它非常适合处理用户交互和异步任务
  • 跨平台:由于几乎所有现代浏览器都内置了JavaScript解释器,因此JavaScript代码可以在多种操作系统和设备上无缝运行
  • 支持面向对象编程:虽然JavaScript是一种多范式语言,但它也支持面向对象编程的风格
  • Web开发者必学:JavaScript与HTML和CSS一起构成了Web开发的三大核心技术,是前端开发者必须掌握的语言之一

浏览器发展史

  1. 1990 年, 蒂姆·伯纳斯·李(Tim Berners-Lee)开发 WorldWideWeb
  2. 1993 年, 美国伊利诺伊大学(NCSA)的马克·安德森(Marc Andreessen) 开发了 Mosaic
  3. 1994 年, 马克·安德森开发了 Netscape Navigator(网景公司)
  4. 1996 年, 微软开发了 IE 1.0, 网景开发了出了 livescript 并且和 SUN 公司合作, 将 livescript 改名为 javascript(此时: java 知名度特别高, 所以改名, 方便推广宣传)
  5. 2001 年, IE6 和 windowXP 诞生,
  6. 2003 年, mozillaNetscape Navigator 的基础上开发了firefox

主流浏览器内核

浏览器内核
IEtrident
chromewebkit/Chromium
safariwebkit
firefoxgecko
operapresto

编程语言分类

  1. 编译型(强类型语言): 源码通过编译器编译成机器码
  2. 解释型(弱类型语言): 源码通过解释器去执行,解释行就执行一行

JavaScript 规范

  1. ECMAScript: 脚本语言规范(不仅仅是 js, 也包括其他脚本语言, 如 PHP), 规定了语法的规范, 比如(变量, 值, 关键字, 保留字, 语法, 函数等..)
  2. W3C: 规定了 DOM 规范(DOM: Document Object Model)
  3. BOM: Browser Object Model: 没有规范 各个浏览器写法不统一

单线程多线程

单线程: 同时只能做一件事 多线程: 同时能做多个事

JavaScript 引擎是单线程还是多线程?

答: 单线程

为什么是 JS 引擎是单线程却可以同时执行多个任务?

虽然 JavaScript 引擎是 单线程, 但是 JS 引擎会通过 轮转时间片 的方式 来模拟多线程的工作方式, 将异步任务放到异步任务队列中去,然后通过事件轮询 的方式来触发执行异步任务

什么叫轮转时间片?

短时间内轮流执行多个任务的片段

    1. 任务1   任务2
    2. 切分任务1, 任务2
    3. 随机排列任务片段, 组成任务队列
    4. 按照队列顺序将任务送到js程序进程中执行
    5. JS线程执行, 一个一个的任务片段

JS 代码引用方式

  1. 内部嵌入方式
html
<!-- other html -->
<script>
  // js codes
</script>
  1. 外部导入方式
html
<!-- other html -->
<script src="js/xxx.js"></script>
  1. 文件类型声明及其作用
html
<script type="text/javascript">
  // 用于写js代码, 默认不写就是 text/javascript
</script>

<script type="text/tpl" id="tpl">
  // 为了不让js代码执行, 然后通过模板引擎的方式, 获取中间的内容替换成具体数据
  // 比如: https://github.com/aui/art-template
  // 比如: https://ejs.bootcss.com/
  <tr>
      <td>{{id}}</td>
      <td>{{username}}</td>
  </tr>
</script>

Released under the MIT License.