今天被问到Java和JavaScript的区别. 作为一个脚本语言,显然他们的区别并不是在api的数量. 目前我理解的一些区别:
- Java是静态语言,全部代码由编译器编译完成后生成静态字节码再由转义工具转化为可执行脚本. 而JS则是动态语言(解释型语言), 由不同环境的执行引擎,比如在浏览器环境下/Node.js由Chrome的V8引擎进行预处理与执行. 虽然JS在执行前会通篇扫描一下, 找出低级语法错误, 但是它是编译一行执行一行, 当语法分析没有问题,并且已经完成预编译就开始执行代码.
- Java是强类型语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型. 比如,申明一个数组来存储整形数字,一旦完成申明后数组内容就不可改变--
int[] arr = new int[]{1,2,3}这时往数组里放一个字符串肯定是不行的, 而JS是可以的. JavaScript是弱类型语言, 某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过现行强制转换。 比如一个arr在申明的时候不需要指定类型 arr可以装数字可以装字符也可以装字符串,当静态数组也可以当动态数组甚至还可以当栈或者队列用. 不需要考虑类型问题, 一个let arr = [] 可以解决全部string问题. 用Java编码就好像用烤箱,微波炉,搅蛋器,模具等工具来规规矩矩的做一顿饭. 而JS就像是用平底锅,菜刀,菜刀,铲子一些简单的工具发挥想象力来做饭.
let arr = []
arr.push('str') // ['str']
arr.push(1) // ['str', 1]
arr.pop() // return the last element -- 1 ['str']
arr.shift() // return the first element -- 'str' []