目录

  • 1、C语言和JavaScript语言的异同是什么?
  • 2、Java和JavaScript语言的区别是什么?
  • 3、node和浏览器的区别是什么?
  • (1)表面的区别
  • (2)底层核心区别


1、C语言和JavaScript语言的异同是什么?

⭐️相同之处

某些词法、语法相同。JavaScript的词法语法的设计是参考Java的,而Java的词法语法的设计是参考C的。我想到的JavaScript、Java、C++和C都相同的词法、语法有:

①把单个等号作为赋值运算符而不是相等判断运算符,如:a=b+1代表“把变量b+1的结果赋予变量a”,而不是“变量a的值与变量b+1的值相等”
②赋值运算是一个表达式,可以作为一个值参与其他运算,如:(a=b+1)>10。
③语句以分号结束;
④以“&”“|”“^”“!”“&&”“||”分别作为按位与、按位或、按位异或、逻辑非、逻辑与、逻辑或运算的运算符
⑤以问号和冒号组成的三目运算符;
⑥乘除运算符、加减运算符、比较运算符、逻辑与逻辑或运算符、赋值运算符的优先级顺序;
⑦函数调用的语法为“函数名(参数1, 参数2, …)”;
⑧if、for、while、do-while、switch-case、break的语法;……

⭐️不同之处

C语言

Javascript

主要是被编译成机器语言

JavaScript主要是作为脚本被解释器解释执行

需要程序员手动管理内存(主要指堆内存的申请和释放)

内存是由解释器来管理的;

静态类型语言,即程序运行之前每个变量的数据类型就已经确定,在运行时不能改变

是动态类型语言,变量的数据类型在运行时仍可变化

有int,char,float等等

只有let(先忽略var),所以转换过程中遇到C语言中的数据类型要换成let

常用一种除法整除取整比如int a = 5/2;,结果就是2

js中这样计算默认会变成2.5,要达到C语言的写法要改成let a = parseInt(5/2)。 除法取余和C语言一样直接使用%就可以

没有闭包的概念

JavaScript中的函数都与其定义时可访问到的变量组成闭包

没有对“类的成员方法”“类的成员的封装(对外不可见)”“类的继承与多态”等面向对象的特性的支持

可以通过原型链和闭包等实现面向对象的继承、多态和封装,实现ECMAScript 2015及以上版本的JavaScript更是在语法层面支持类的定义

可以通过调用系统API来实现多线程,可以通过多线程来提高阻塞操作(主要是IO)时的CPU利用率

主要是单线程,JavaScript的可能阻塞的操作都由JavaScript运行时提供的异步API来完成

2、Java和JavaScript语言的区别是什么?

⭐️(1)语言特点
1.1 弱类型:

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

1.2 动态语言:

java在定义了一个数组的长度以后就不能再改变了,但是javascript却可以。
并且java一个数组只能放同一种类型,但javascript可以在一个数组内加不同数据类型的数据。(可以说Java比较死板,javascript则比较灵活。)

1.3 脚本语言:

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

1.4定位:

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

⭐️(2)数据类型
2.1 基础数据类型:

Java有八大数据类型:byte,short,int,long,float,double,char,Boolean。
javascript把上面的整理成了三种原始类型:number,string,boolean。另外还有两个特殊的原始类型是:null和undefined。

2.2 变量声明

Java:数据类型 变量名=值;
Javascript:var 变量名=值;数组

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

Javascript:var 数组名=[];
var 数组名=new Array();

⭐️(3)函数

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

⭐️(4)用处:

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


3、node和浏览器的区别是什么?

(1)表面的区别

浏览器和node.js都可以看作是JS的运行平台,浏览器是JS在客户端的运行时环境,而node.js是JS在服务端的运行环境。

JS运行在浏览器端,用于用户的交互效果。JS运行在node.js,用于服务器的操作。

JS需要浏览器的JS引擎进行解析执行,但是不同浏览器的JS引擎不同,存在兼容性问题。而node.js是基于 chrome v8引擎的运行时环境,无兼容性问题。

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

浏览器下this指向window,nodejs中this指向global

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

(2)底层核心区别

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

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