javascript和ECMAScript通常被人们表达相同的含义
一个完整的JavaScript由三个部分组成:ECMAScript(核心),DOM(文档对象模型),BOM(浏览器对象模型)
由ECMA-262定义的ECAMScript与Web浏览器没有依赖关系
ECMA-262定义的只是这门语言的基础
Web浏览器只是ECMAScript实现的可能的宿主环境之一,其他可能的宿主环境包括Node和Adobe Flash
ECMA-2626规定了:语法,类型,语句,关键字,保留字,操作符,对象
JavaScript实现了ECMAScript,Adobe ActionScript同样也是实现了ECMAScript
DOM(Document Object Model)文档对象模型
DOM1级别
DOM1级别由两个模块组成:DOM Core和DOM HTML
DOM Core规定的是如何映射基于XML的文档结构,以简化对文档中任意部分的访问操作
DOM HTML 在DOM核心的基础上加以扩展,添加针对HTML的对象和方法
DOM2级别
DOM1主要是映射文档的结构,DOM2级在原有的DOM基础上又扩充了鼠标和用户界面事件,范围,遍历等细节模块还通过对象接口增加对CSS的支持,DOM2引入的新模块包括
DOM视图(DOM Views):定义了不同文档视图接口
DOM事件(DOM Events):d定义了事件和事件处理接口
DOM样式(DOM Style):定义了基于CSS为元素应用样式的接口
DOM遍历和范围(DOM Traversal and Range):定义了遍历和操作文档树的接口
DOM3级别
引入统一方式加载和保存文档的方法–在DOM加载和保存(DOMLoad and Save)模块中定义
新增验证文档的方法–在DOM验证(DOM validation)模块
BOM浏览器对象模型弹出新浏览器窗口功能
移动,缩放和关闭浏览器功能
提供浏览器详细信息的navigator对象
提供浏览器加载页面详细信息的location对象
提供用户显示器分辨率的screen对象
对cookie的支持
像XMLHttpRequest和IE的ActiveXObject这样的自定义对象
HTML中引用script标签
<script type="text/javascript" src="w外部js脚本相对路径"></script>
六个属性
属性名 | 含义 |
---|---|
async | 表示立即下载脚本,只对外部脚本文件有效 |
charset | 很少使用,表示通过src属性指定的外部文件代码文的字符集 |
defer | 表示脚本可以延迟到文档完全被解析和显示后再执行,只对外部脚本文件有效 |
language | 弃用 |
src | 表示包含要执行代码的外部文件 |
type | language的替代属性,表示脚本的MIME类型,实际上服务器在发送JavaScript文件时使用的MIME类型通常是application/x-javascript,但在type中设置值可能导致脚本被忽略,在非浏览器中还可以使用application/javascript和application/ecmascript,目前type的属性还是text/javascript |
script标签使用的两种方式
<script>
//脚本
</script>
<script type="text/javascript" src="w外部js脚本相对路径"></script>
javascript区分大小写
标识符
第一个字符必须死字母,下划线,或$
注释
//单行注释
/**/多行注释
严格模式
代码开始前写上
“use struct”
变量
javascript的变量是松散型
未经初始化的变量会保存undefined值
省略var 的变量为全局变量 在严格模式下错误
ECMAScript的五种简单数据类型
Undefined Null Boolean Number String
一种复杂数据类型
Object 其本质上是无序的名值对组成
typeof操作符
操作类型 | 返回值 |
---|---|
未定义 | undefined |
布尔值 | boolean |
字符串 | string |
数值 | number |
对象或null | object |
函数 | function |
Undefined类型
只有一个值,这个值为undefined,未对变量初始化的变量默认取值为undefined
特殊情况:typeof 未声明的变量也获得undefined
Null类型 只有一个值,这个值为null,表示对象空指针
undefined是null派生出来的值 因此undefined == null 为true
Boolean类型 该类型有两个值 true和false
ECMAScript中所有类型的值都与这两个等价
将一个值转为其对应的Boolean 值使用转换函数Boolean() 或 !!
转换规则
类型 | 规则 |
---|---|
String | 任何非空字符串–>true,”“->false |
Number | 任何非零数字值包括无穷大->true,0或NaN—>false |
Object | 任何对象->true,null->false |
Undefined | undefined->false |
Number类型
浮点数的最高进度是17位小数
Number.MIN_VALUE最小值
Number.MAX_VALUE最大值
超过最小值或最大值范围转为Infinity值判断是否无穷isFinite()
NaN 非数值
isNaN()判断是否为数值
isNaN(true)返回true因为true为1
isNaN也使可用于对象,先调用对象的valueof(),基于返回值调用toString()方法
数字转换
Number(),parseInt(),parseFloat()
如果转换值为null返回0
如果转换值为undefined返回NaN
parseInt可传入第二个参数多少进制-基数
String类型
数值,布尔值,对象,和字符串值都有toString方法,null和undefined无此方法
Object类型
在ECMAScript中Object类型是所有其他实例的基础(类似于java.lang.Object)
Object的每个实例都具有下列属性和方法
属性或方法 | 说明 |
---|---|
constructor | 保存用于创建当前对象的函数 |
hasOwnProperty(propertyName) | 用于检查给定的属性在当前独享实例中是否存在 |
isProptotypeOf(Object) | 用于检查出入对象师傅是对象的原型 |
propertyIsEnumerable(propertyName) | 用于检查是否给定的属性能够使用for-in来枚举 |
toLocaleString() | 返回字符串的表示,与执行环境对应 |
toString() | 对象的字符串表示 |
valueOf() | 表示对象的字符串,数值或布尔表示 |
一元操作符
++ –
位操作符
左移,右移,无符号右移 ~ 按位非 & |^ 按位异或
for-in语句
精准的迭代语句,用于枚举对象的属性
with 将代码的作用域设置到一个特定的对象中,不建议使用
函数参数的理解笔记(二)