JavaScript,弱类型动态脚本语言,浏览器嵌入式语言。简单,灵动。
一 JavaScript中的基本数据类型
JavaScript中简单数据类型只有undefined,null,boolean,number,string。
复杂数据类型只有一种,即object。代码由function体现。
其他所有的代码都由以上基本内容组成。足够简单,但功能强大。
可以用typeof运算符来区别不同数据的类型。
二 JavaScript是函数式编程语言
这是最接近我们的函数式编程语言了。相比Lisp,Haskell。JavaScript显得如此亲切。函数是JavaScript的第一对象。函数可以制造对象,函数是JavaScript对象之父。
三 JavaScript是基于对象的编程语言
JavaScript中没有类的概念。JavaScript中,一切可以被当作对象来处理。function可以看作是对象。boolean,number,string必要时解释器会自动包装为对象。
对象本质上就是一系列属性的集合,而JavaScript对象的本质是字典。这与Python几乎一致。
字典是一种可变容器,JavaScript对象的属性可以动态添加,也可以动态减少。
四 JavaScript的面向对象
通过优秀的设计,使用强大的this、prototype语法,JavaScript已经几乎可以完全支持面向对象了,虽然其实现方式显得很不寻常。(至于是不是完全的面向对象。我总觉着JavaScript函数式才是其真正本质。面向对象还是为了迎合开发者的。但仁者见仁,智者见智。这并不重要。)
五 JavaScript运行环境
1.宿主环境
JavaScript必须在浏览器中运行。相对于JavaScript,Web浏览器是一种外壳程序。外壳程序向脚本语言提供宿主环境,宿主环境向脚本语言提供基本对象,脚本语言操作这些对象,从而获得一些实际的能力。
例:JavaScript本身没有IO接口,没有实际的能力。javascript运行在外壳程序中,实际能力要依靠当前宿主环境提供的基本对象完成。比如 alert("hello world"); 这就是借助window对象的alert()函数完成。
又例:Windows环境中,MS提供WSH作为宿主环境。该环境定义了wscript对象以表示全局对象。
2.执行期环境
由宿主环境通过脚本引擎创建,实际就是由JavaScript引擎创建的一个代码解析初始环境。初始化内容包括:
一套与宿主环境相联系的规则
JavaScript引擎内核(基本语法规范、逻辑、命令和算法)
一组内置对象和API
其他
不同JavaScript引擎定义的初始化环境是不同的,这样也就形成了浏览器兼容问题。
六 JavaScript执行顺序
1.按HTML文档流的顺序从上到下解析JavaScript代码。不会因为某部分的js是外部代码而延期解析。
2.预编译与执行顺序的关系
javascript解析器会优先解析变量声明。后处理相应的执行语句。
保证良好习惯:声明全局变量和函数应放在代码之前。
3.按块执行JavaScript
如果遇到<script>标签,JavaScript解释器会等到代码块加载完后,先对代码块进行预编译,然后执行。之后再解析下一个HTML代码块。
所以,如果在前一块中用到后一块中声明的函数或变量,则会提示错误。
不同块中的变量和函数属于同一个全局作用域,即可以共享。
4.事件机制改变JavaScript执行瞬息
为避免网速随JavaScript执行的影响,一般在页面初始化完毕后才允许执行JavaScript代码。
使用onload事件,该事件在页面加载完毕后执行。
参考书籍:
<悟透JavaScript>
<JavaScript征途>