自己一直从事Java开发,在进行java开发web程序时,也用到javascript这样的脚本语言。javascript是一种动态语言,主要是基于浏览器解析并运行,最开始的时候这门语言并不是叫做javasript,而后来为什么javascript呢?主要是因为商业运作的考虑。当时javaweb开发风声水起,为了提高自己的知名度,因此改名为javascript。若是平时用的是java开发项目的,用javascript开发程序还是挺不是适应。首先java是编译器编译后,然后在根据平台的jvm上运行,所以在用工具开发时,编译器能随时对出现语法错误的位置进行标记。而javascript是解释器进行编译,而解释器是嵌入浏览器中的,因此出现语法错误这种问题时,只有在浏览器运行时才意识到哪里出了问题,觉得在使用上不太方便。
java和javascript还有一个明显的区别,java在开发时对每个基本类型的引用必须标明该引用是指用哪种类型。而javascript在初始化基本类型的引用是都用var,但当程序运行时总能分辨出是字符串还是数字类型。并进行相应的运算。在刚接触javascript语言时,以为javascript是弱语言类型的。后来对这门语言进一步了解后,发现其实javascrip也是强类型的语言。说是强类型语言,主要是因为语法方面对类型有强制的规定,比如定义的一个变量是字符串,所以在程序运行时判断是字符串后,才能调用相应的字符串操作函数。若是定义的变量是数字类型时,调用针对字符串的函数时就会提示语法错误。java在定义是就标明这个是什么类型的变量,而javascript是在运行时根据对应的值来确定这个是什么类型,似乎比java语言在这点上更加智能一点。但是这也会造成类型混乱的风险,虽然这个风险是可以避免的。而语法上面这样的设计也是因为脚本语言的限制所决定。
上面说过,javascript是基于浏览器中解释器翻译后运行,运行时才知道你所写的定义与逻辑,所以在编写时对变量进行各种类型的定义似乎没有意义,即使在设计语言时,有像静态语言一样的变量类型定制,在解释器进行翻译过程中还要验证你所标明的类型和直接的值是否一致,那还不如直接由解释器来说明这个值是属于哪种类型的更方便。因此动态语言这点上跟静态语言有很大的差别。