DOM的级别
DOM1级
主要包含两个模块:DOM核心和DOM HTML。其中DOM核心规定的是如何映射基于XML的文档结构,简化对文档中任意部分的访问和操作。DOM HTML是在DOM核心的基础上加以扩展,添加了针对HTML的对象和方法。
DOM2级
在原先的DOM基础上进行扩展,扩充了鼠标和用户界面事件、范围、遍历等细分模块,增加了CSS支持。
DOM3级
引入了统一的方式加载和保存文档的方法,新增了验证文档的方法,对DOM核心扩展,支持XML1.0规范。
其他DOM标准
SVG(可伸缩矢量图)
MathML(数学标记语言)
SMIL(同步多媒体集成语言)
浏览器对象模型BOM
从根本上讲,BOM只处理浏览器窗口和框架。但是人们习惯上也把针对浏览器的javascript扩展算作BOM的一部分,这些扩展如下:
弹出新浏览器窗口的功能
移动、缩放和关闭浏览器窗口的功能
提供浏览器详细信息的navigator对象
提供所有页面载入信息的location对象
提供用户显示器分辨率详细信息的screen对象
对cookie的支持
像XMLHttpRequest和IE的ActiveXObject这样的自定义对象
javascript是一种专为与网页交互而设计的脚本语言,由下列三个不同部分组成:
ECMAScript,由ECMA-262定义,提供核心语言功能
文档对象模型(DOM),提供访问和操作网页的方法和接口
浏览器对象模型(BOM),提供了与浏览器交互的方法和接口
在javascript载入时,在<script>中添加async,表示立即下载脚本,但是只应用到载入外部文档,应用到多个载入时会把载入顺序变得杂论。这必须要求外部文档无关联。
现代的WEB应用,一般把全部的javascript放在<body>元素中页面内容的后面,这样可以让人感觉到文档载入速度加快。
对于文档的标准模式,可以使用下面的任何一种文档类型进行开启:
<!-- HTML 4.01 严格型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 //EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- XHTML 1.0 严格型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml-strict.dtd">
<!-- HTML 5-->
<!DOCTYPE html>
对于准标准模式,可以使用框架集或者过度类型来触发载入文档
<!-- HTML 4.01 过渡型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- HTML 4.01 框架集型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/rameset.dtd">
<!-- XHTML 1.0 过渡型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/xhtml- transitional .dtd">
<!-- XHTML 1.0 框架集型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Frameset //EN" "http://www.w3.org/TR/xhtml1/xhtml- frameset .dtd">
一般提到的标准模式就是上面的两种之一。
<noscript>包含的内容只有在不支持javascript或者在禁用javascrip的时候才会显示。
严格模式
在严格模式下,一些不确定的信息会得到处理,一些会抛出异常。要想在整个脚本中启用严格模式:
要在脚本的顶部添加"use strict";这是一个编译指示,也可以在函数内部第一行添加,在函数内部执行严格模式。
用一条语句定义多个变量时,可以参照: var message="hi",found=false,age=28;
对一个值执行typeof操作符会返回下列的情况:
"undifined":如果这个值没有定义
"boolean":如果这个值是布尔值
"string":如果这个值是字符串
"number":如果这个值是数字
"object":如果这个值是对象或者null
"function":如果这个值是函数
在条件判断中null==undefined会返回true
其他数据类型转化为boolean类型的规则:
Boolean true false
String 非空字符串 ""
Number 任意非零数字 0和NaN
Object 任何对象 null
Undefined N/A(不适用) undefined
javascript的数值范围是有限制的,如果超过这个范围会转化为最近的无穷大和无穷小,不能参加下一步的运算。当运算的数值接近极限的时候,需要进行判断。
NaN,即非数值(not a number)是一个特殊的数值,这个数值表示本来需要返回数字的地方未返回数字的情况。例如任意数字除以0,会得到NaN。这个数值会有两个不同寻常的特点。任何涉及NaN的操作都会返回NaN。NaN与任何数值都不相等,包括它自身NaN。isNaN()函数会帮我们判断参数是否是一个“不是数值”。
数值转换
在转换时会用到三个函数:Number(),parseInt(),parseFloat().
Number()转换规则如下:
1.Boolean类型,true=1,false=0
2.Number,直接返回
3.null=0
4.undefined,返回NaN
5.字符串类型,包含数字返回数字,忽略前面的0,包含有效地浮点格式,返回浮点数值,包含十六进制,返
回十进制数字,如果是空字符串,返回0,如果无以上情况返回NaN。
6.如果是对象,调用对象的valueOf()方法,然后依照前面转化。如果转化为NaN,调用对象的toString()方
法,再依照前面的规则转化。
parseInt()转换规则如下:
忽略前面的空格,判断第一个字符是否是数字,直到结尾或非数字,停止解析返回数字。如果不符合前面的规则,返回NaN。parseInt(值,进制)。parseFloat类似parseInt.
字符串的转化
toString()和String()
位操作符
按位非(NOT)
返回二进制的反码。举例:var num=12;~num;
按位或(OR)
返回二进制不同部分的和。举例:var msg=25|3;
按位与(AND)
返回二进制相同部分。举例var msg=25&3;
左移操作(<<)
右移操作(>>)
==与===的关系
使用label语句可以在代码中添加标签
label:statement 举例:start:for(var i=0;i<n;i++){alert(i);}
with,将代码的作用域设置到特定的作用域中
javascript没有函数的重载,但是可以在函数内部处理成为类似函数重载的样子。