JavaScript 简介

一、JavaScript 语言特性

  • 轻量级
  • 单线程
  • 弱类型(动态)
  • 非独立
  • 解释性

轻量级

js 只需要网页就可以解释执行,不需要安装本地编译环境。

单线程

浏览器只分配给js一个主线程,一次只能执行一个任务(即,同一时刻仅有一处代码正在执行),这些任务形成一个任务队列排队等候执行。

JavaScript 单线程的目的是为了避免多线程冲突。例如,多线程下同时操作同一个 DOM 节点就可能导致每次运行都会产生不同的结果,甚至抛出异常。

时代在进步,为了利用多核 CPU 的计算能力,HTML5 提出了一个新标准:Web Worker。该标准允许 JavaScript 创建多个线程,但被创建的子线程完全受主线程控制,并且子线程中是另外一个全局作用域,因此子线程不能操作主线程上的 DOM 对象,以此来避免 DOM 操作冲突,而又达到充分利用多核 CPU 的计算能力,但实际上,这个新标准并没有改变 JavaScript 单线程的本质。

JavaScript 的宿主环境(浏览器、Node)是多线程的(如:JavaScript 的执行线程、页面渲染线程、事件触发线程、http 请求线程等),宿主环境通过事件驱动使得 JavaScript 具备了异步的属性。

弱类型(动态)

js的一个变量可以赋不同数据类型的值。

非独立

JavaScript 语言依赖执行环境,对于客户端来说是浏览器,对于服务器来说是node。

解释性语言

不需要在运行前编译,在运行程序的时候才翻译。JavaScript 的解释器被称为 JavaScript 引擎,常见的 JavaScript 引擎有:

  • V8,用于 Chrome、Node.js
  • JavaScriptCore,用于 Safari
  • Chakra,用于 IE 和 Edge
  • JaegerMonkey,用于 FireFox
  • Carakan,用于 Opera

二、JavaScript 是内存自动管理语言

内存管理

机器中的每个内存,都有一个内存地址。内存的容量叫做字长。字长一般是32位或64位。我们要把一个东西存入内存时,先得把它转换成数字,这就是编码。当我们想要从内存中取出它时,需要对其解码。

JavaScript 自动内存管理流程

当我们使用 js 时,不需要过多考虑内存的事,js引擎会作为中间人,自动管理内存。

我们来看一下用js创建一个变量时,内存是怎么被自动管理的?

1) js引擎通过编码器把它转换成二进制表示的值。

2) 然后,它找到可以存放二进制表示值的空间,这个过程叫做分配内存。

3) 然后,引擎会跟踪这个变量是否仍然在程序中被使用,如果变量不再被使用,内存将被回收,这样 js 引擎就可以存放新的值了。这个过程叫垃圾回收。

像 JS 这种不用直接处理内存的语言,叫内存自动管理语言。

三、其他

1. JavaScript 程序是用 Unicode 字符集编写的。Unicode 是 ASCII 和 Latin-1 的超集,并支持地球上几乎所有在用的语言。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值