一. 计算机语言
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算 机才能执行高级语言编写的程序。 翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译 的时间不同。
二. 编译性语言
编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe 文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了 一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
三.解释性语言
解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如 解释性java语言,专门有一个解释器能够直接执行java程序,每个语句都是执行的时候才翻译。这样解 释性语言每执行一次就要翻译一次,效率比较低
四.编译型与解释型的区别
编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发 操作系统、大型应用程序、数据库系统等时都采用它,像C/C++等都是编译语言,而一些网页脚本、服 务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常 使用解释性语言,如:JAVA javascript python等
五.javascript语言
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是 作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型 编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
六. 基本类型和引用类型
ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是那些保 存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。而引用类型值是指那些保存堆内 存中的对象,意思是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保 存对象。
七.js中的堆内存和栈内存
计算器语言有一个处理的过程,写的代码会进行解释或编译执行,这个过程是在内存中,内存的使用和 分配,涉及到堆和栈 任何语言都有堆和栈 ,堆和栈都存放在内存中
八.内存分配和垃圾回收
一般来说栈内存线性有序存储,容量小,系统分配效率高,一般栈内存用于存储基本数据类型。而堆内存首先要在堆内存新分配存储区域,堆内存存储复杂数据类型, 之后又要把指针存储到栈内存中,效率相对就要低一些了。
垃圾回收方面,栈内存变量基本上用完就回收了,而推内存中的变量因为存在很多不确定的引用,只有 当所有调用的变量全部销毁之后才能回收