JavaScript与C语言和Java语言的区别,以及node和浏览器的区别

一、JavaScript与C语言的区别

  • C语言主要是被编译成机器语言,而JavaScript主要是作为脚本语言被解释器解释执行;
  • C语言需要程序员手动管理内存(主要指堆内存的申请和释放),而JavaScript的内存是由解释器来管理的;
  • C语言静态类型语言,即程序运行之前每个变量的数据类型就已经确定,在运行时不能改变,而JavaScript动态类型语言,变量的数据类型在运行时仍可变化;
  • C语言中没有闭包的概念,JavaScript中的函数都与其定义时可访问到的变量组成闭包;
  • C语言没有对“类的成员方法”“类的成员的封装(对外不可见)”“类的继承与多态”等面向对象的特性的支持,而JavaScript可以通过原型链和闭包等实现面向对象的继承、多态和封装,实现ECMAScript 2015及以上版本的JavaScript更是在语法层面支持类的定义;
  • C语言可以通过调用系统API来实现多线程,可以通过多线程来提高阻塞操作(主要是IO)时的CPU利用率,而JavaScript主要是单线程,JavaScript的可能阻塞的操作都由JavaScript运行时提供的异步API来完成。
  • C语言中有int,char,float等等,而JavaScript中只有let(先忽略var),所以转换过程中遇到C语言中的数据类型要换成let。
  • C语言中常用一种除法整除取整比如int a = 5/2;,结果就是2。而在JavaScript中这样计算默认会变成2.5,要达到C语言的写法要改成let a = parseInt(5/2)。 除法取余和C语言一样直接使用%就可以了。

二、JavaScript与Java语言的区别

「1. 语言特点」

1.1 弱类型:

  • JavaScript是动态的弱类型语言,使用前不需声明变量的数据类型;
  • Java是静态类型语言,或称为强制类型语言,变量的类型必须事先定义。

1.2 动态语言:

  • Java在定义了一个数组的长度以后就不能再改变了,但是JavaScript却可以。
  • Java一个数组只能放同一种类型,但JavaScript可以在一个数组内加不同数据类型的数据。

1.3 脚本语言:

  • JavaScript的程序代码由客户端浏览器解释、执行;Java程序则必须先经过编译,转化成class文件,在客户端的JVM环境下执行。
  • Java等后台语言都是编译后执行的,但是JavaScript却是边编译边执行。

1.4定位:

Java是一种完全面向对象的编程语言,想要运用Java写东西就必须先设计对象,而JavaScript不一样,它是基于对象和事件的一种脚本语言,它为开发者自带提供了很多内部对象,要更为简易省时。

「2. 数据类型」

2.1 基础数据类型:

  • Java有八种基本数据类型:byte、char、short、int、float、long、double、Boolean。剩余都是引用数据类型:类class、接口interface、数组Array。
  • JavaScript有五种基本数据类型(值类型):Number、String、Boolean、Null、Undefined、Symbol。三种引用数据类型:Array、Object、Function。

2.2 变量声明

  • Java:数据类型 变量名=值;
String a = "abc";
int b = 123;
  • JavaScript中定义一个变量或数组,使用var、或者let关键字。定义一个常量,使用const关键字。
let a = "abc";
let b = 123;
  • Java:

  类型[ ]数组名=new 类型[数量];

  类型[ ] 数组名=new 类型[ ]{元素1,元素2…};

  • JavaScript:

  var 数组名=[ ];

       var 数组名=new Array();

「3. 函数」

  • Java: 返回值类型 函数名(类型 参数1,类型 参数2…){}
  • JavaScript:function 函数名(参数1,参数2…){}

「4. 类」

  • JavaScript中的类,成员变量要写在构造函数里。
class A {
    constructor(){
    let a = 1;// 类内私有成员变量,外部不可调用
    console.log(a);
}
}
  • Java中的类,成员变量可以写在构造函数外。
public class TypeTest {
    int number = 1;
    public static void main (String []args) {
        System.out.println(new TypeTest().number);
    }
}

「5. 程序执行的区别」

  • JavaScript是一门脚本语言,它的执行是自上而下,依次执行的。
  • Java是一门面向对象的语言,你必须有一个main函数,它的执行是从main函数开始的。

「6. 修饰符的区别」
修饰符是对定义好的变量或者类,进行特殊限定的关键字。

  • JavaScript中是没有修饰符的概念的。
  • Java中的修饰符分两类:访问控制修饰符、非访问控制修饰符。

访问控制修饰符:public、private、protected、default
非访问控制修饰符:final、static、abstract、synchronized等等。

「7. 抽象类的区别」

  • JavaScript中没有抽象类的概念。
  • Java中有抽象类的概念。

「8. package」

  • JavaScript中没有package的概念
  • Java中有package的概念。

package本质上是给类一个命名空间。不同的命名空间内,可以定义名字相同的两个类。

public abstract class A {}

「9.用处」

它们最本质的不同就是用途,Java目前被广泛应用于PC端、手机端、互联网、数据中心等等,而JavaScript则被主要用于嵌入文本到HTML页面,读写HTML元素,控制cookies等。

「10. 其他」

  • Java主要在服务端运行;JavaScript主要运行在客户端浏览器中。
  • JavaScript 的面向对象是基于原型的(prototype-based)实现的,Java 是基于类(class-based)的;

三、Node和浏览器的区别

1.全局下this的指向不同
浏览器下this指向window,node.js中this指向global,所以window中封装的一些例如alert这些方法在node.js中是无法使用的。

2.使用的引擎不一样
JS需要浏览器的JS引擎进行解析执行,但是不同的浏览器使用的引擎都是有差别的(所以应用会出现各种兼容性差异),而node.js是基于 chrome v8引擎的运行时环境,引擎一致不管什么环境都不存在兼容性的问题。

3.对于ECMAScript语法来说,在node.js和浏览器中都能运行。node.js无法使用DOM和BOM的操作,浏览器无法执行node.js中的文件操作等功能。

4.使用的模块标准不同,nodejs使用的是CommonJs的模块标准,而浏览器使用的是ES的模块标准所以nodejs中使用的是require()导入模块;浏览器中js使用的是import的方式导入

5.浏览器和node.js都可以看作是JS的运行平台,浏览器是JS在客户端的运行de环境,用于用户的交互效果。而node.js是JS在服务端的运行环境,用于服务器的操作。

6.浏览器和环境Node下,microtask 任务队列的执行时机不同

  • Node端,microtask 在事件循环的各个阶段之间执行
  • 浏览器端,microtask 在事件循环的 macrotask 执行完之后执行

参考文章  参考文章  参考文章  

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值