不同点
-
JavaScript 和 Java 有一些共性但是在另一些方面有着根本性区别。JavaScript语言类似 Java 但是并没有 Java 的静态类型和强类型检查特性。JavaScript 遵循了 Java 的表达式语法,命名规范以及基础流程控 制,这也是 JavaScript 从 LiveScript 更名的原因
-
与 Java 相比,Javascript 是一门形式自由的语言。你不必声明所有的变量,类和方法。你不必关心方法 是否是 共有、私有或者受保护的,也不需要实现接口。无需显式指定变量、参数、方法返回值的数据类 型。
不同点 | Java | JavaScript |
---|---|---|
基本数据类型 | 八种基本数据类型(byte,short,int,long,boolean,char,double,float) | 六种基本数据类型(number,string,null,undefined,boolean,object) |
变量声明方式 | 八种数据类型均可以 | 三种声明方式:var,let,const |
变量类型 | 动态(不必指定数据类型) | 静态(需要指定数据类型) |
语句分号 | 必须有 | 非必须 |
单双引号 | 单引号表示单个字符,双引号表示字符串 | 不区分单双引号,均代表字符串 |
数字 | 整数与浮点数不同 | 整数和浮点数都是同一个类型 |
数组 | 数组长度不可变,元素类型相同 | 数组类似于List容器,长度可变,元素类型可以不同 |
增强for循环 | List集合中,循环元素代表list中的元素 | 数组中,for...in循环的元素是数组的下标;for...of循环的是数组的每个元素 |
语言 | 面向对象语言 | 脚本语言(基于对象和事件驱动) |
是否编译 | 执行之前必须经过编译 | 可由浏览器直接解释执行 |
运行端 | 主要在服务端 | 主要在客户端服务器 |
类型强弱 | 强类型(所有变量在编译之前必须声明) | 弱类型,不需要声明(解释器在运行时检查数据类型) |
输出语句 | System.out.println(内容) | console.log(内容) |
对象不同点 | java对象基于类 | javascript对象是基于原型的 |
并发方式 | 基于线程的并发方法 | 基于事件是并发方法 |
变量定义 | 不可以重复定义相同变量名 | 可以重复定义变量名 |
变量类型检查 | 使用getclass() | 使用typeof运算符 |
if条件语句 | 当条件是0,null,” ”,undefined,NaN的时候直接预编译报错 | 当条件是0,null,” ”,undefined,NaN,false的时候,条件结果是false; |
循环语句 | 有三种(for语句,while语句,do.....while语句) | 有五种(for语句,while语句,do.....while语句,for....in语句,for......of语句) |
输入/输出 | 使用Scanner和system.out.print() | 输出一般使用alert;输入使用prompt; |
异常处理 | 抛出一个特定的异常类型 | JavaScript中的throw可以抛出任意一个含有值的表达式而不用是一个特定的类型 |
运行方式 | 编译型,运行过程需要生成字节码文件 | 解释型语言,不回生成中间文件,解释一定行数,再执行 |
''==''的不同
java
-
基本类型是比较两个数据的值是否相等;
-
引用类型比较的是数据的引用的地址是否相同
javascript
前提条件:左右两边数据类型不同
-
当 number、string、boolean 三者在相互比较时,不为 number 的那一方调用 Number() 方法
-
null 和 undefined 互相相等且和自己也相等,除此之外,这两者和其他任何数据都不相等
-
NaN 比较特殊,NaN 和自身都不相等
-
当 number、string、boolean 三者和对象比较时,对象先调用 toString() 方法转化为字符串
-
对象前加“!”则强制得到一个 false 数据