JavaScript的进阶之路(一)

JavaScript由ECMAScript BOM DOM三部分组成

ECMAScript重要版本1,3,5,6,提供核心语言功能

DOM提供访问和操作网页内容的方法和接口

BOM提供与浏览器交互的的方法和接口

伴随一生的问题:浏览器兼容性

IE5支持ECMAScript1、IE5.5-IE7支持ECMAScript3、IE8不完全支持ECMAScript5、IE9+完全支持ECMAScript5

现在的5大浏览器对这3个部分的支持情况 :
ECMAScript3 大体上都还不错,ECMAScript5支持程度越来越高,ECMAScript6相差较多
DOM相差较多
BOM在HTML5正式纳入标准,5大浏览器实现了某些众所周知的共同特性,但其他特性 相差较多

在HTML中使用JavaScript:使用script标签

1、在script元素中直接写JavaScript代码
2、在元素属性中直接嵌入JavaScript代码
3、引入外部js文件:好处:①可维护性②可缓存③适应未来

脚本的位置:所有脚本在内容最后面。

蓝色内容限于理解,现实中很少用到

延迟脚本:HTML5规定defer属性只适用于外部脚本文件。现实中,并不一定什么时候执行,因此最好只包含一个延迟脚本。

异步脚本:同defer一样,改变处理脚本的行为。2个异步脚本不保证执行顺序,因此确保2个脚本之间互不依赖非常重要

文档模式:混杂模式IE5 标准模式 这两种模式主要影响CSS内容的呈现,某些情况下也会影响到JavaScript的解释执行。

准标准模式:不标准的地方主要体现在处理图片间隙的时候 (在表格中使用图片时问题最明显)

如果没有文档类型声明Doctype,所有浏览器都会呈现混杂模式。不同浏览器在这种模式下的行为差异非常大。如果不使用某些hack技术,跨浏览器行为根本就没有一致性可言。

if(){}

do{}while()语句

while(){}

for语句

即使i是在循环内部定义的变量,但在外部也可以访问到它。因为在ECMAScript中不存在块级作用域。

for(...in...)语句:精准的迭代语句,可用来枚举对象的属性。

因为对象的属性没有顺序,所以循环出的属性名顺序不可预测。

null和undefined在ECMA5以下会报错,在ECMA5中不执行循环体。因此为了保证最大的兼容性,在for in 循环前先确定对象的值是不是null或者undefined。

 

label:语句:加标签以便将来由breake或者continue语句引用,一般与for等循环语句配合使用。

breake或者continue语句

with语句:作用是将代码的作用域设置到一个特定的对象中。主要是为了简化多次编写同一个对象的工作。

严格模式with语句会报错,如果大量使用with语句会导致性能下降,调试代码困难。因此,不建议使用with语句。

switch语句

ECMAScript中函数不存在函数签名的概念,没有重载

无需指定返回值,可以在任何时候返回任何值。未指定返回值的函数,返回的是一个特殊的undefined值

函数内位于return语句之后的任何代码都不会执行。

 

posted @ 2017-08-31 16:51  魔兽IT  阅读(191)  评论(0编辑  收藏  举报