一. Javascipt组成部分
- ECMAScript –>语法、类型、语句、关键字、保留字、操作符、对象
- 文档对象模型(DOM) –>DOM把整个页面映射为一个多层节点结构。提供访问和操作页面内容的方法和接口
- 浏览器对象模型(BOM) –>提供也浏览器交付的方法和接口
二. 使用< script>元素的方式
- 直接在页面中嵌入JS代码
将从上至下一次解释。在浏览器对script标签元素内部的所有代码求值完毕以前,页面中的其余内容都不会被浏览器加载或识别 包含外部JS文件
src属性必须,指向外部js文件的链接*.js扩展名不是必须的,因为浏览器不会检查包含js文件的扩展名。但是服务器通常还是需要看扩展名决定为响应应用哪种MIME类型。
*现在web程序一般把js放在< body>元素中页面内容的后面。
*script元素的defer属性,相当于立即下载,但遇到< /html>后再执行。至适用于外部脚本。与defer类似的async–异步脚本,但不保证下载的先后顺序。
三. 语法
- 区分大小写
- 标识符(变量、函数、属性的名字或函数的参数)
–>采用驼峰大小写格式(第一个字母小写其他每个单词的首字母大写)
–>第一个字符必须是字母,下划线_,或美元符号$ - 注释
//单行注释
/*
多行注释
*/
四. 变量
ECMAScript的变量是松散类型的,就是可以保存任何类型的数据,换句话说就是每个变量仅仅是一个用于保存值得占位符而已。
*定义了但未经过初始化的变量会保存一个特殊的值 — undefined
五. 数据类型
基本数据类型:Undefined、Null、Boolean、Number、String
复杂数据类型:Object
*typeof操作符 –>检测变量的数据类型
- Undefined类型:
只有一个特殊的undefined值,对声明了但未初始化的变量和未声明的变量执行typeof操作符同样会返回undefined值 - Null类型:
只有一个特殊的null值。从逻辑的角度来看,null值表示一个空指针,而这也正是typeof操作符检测null时返回“object”的原因
var car = null;
alert(car); //"object"
如果定义的变量准备将来用于保存对象,那么最好将变量初始化为null。只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
if(a != null) {xxx}
*实际上undefined值是派生自null值,因此 null == undefined 是 true
Boolean类型:
Number类型:
整数、浮点数(最高精度17位)、NaN
*NaN:用于本来要返回数值的操作数未返回数值的情况
特点:任何涉及NaN的操作都返回NaN;NaN与任何值都不相等,包括NaN本身
*isNaN():会尝试将这个值转换为数值,不能被转换为数值的值都返回true
alert(isNaN(NaN)); //true
alert(isNaN("10")); //false
alert(isNaN("blue")); //true
alert(isNaN(false)); //flase(可以被转换为数值1)
*数值转化:Number()、parseInt()、parseFloat()
@ Number():如果是null返回0;true-1 flase-0;undefined-Na
N;如果字符串包含数字、十六进制等格式直接转换为相同大小的十进制整数值或浮点格式(八进制的0会忽略了);如果字符串是空的转换为0;如果字符串包含上述格式,则转换为NaN。如果是对象,调用valueOf()或toString()再按照前面的规则。
@ parseInt():是空字符串或第一个字符不是数字或负号,返回NaN;如果第一个是数字,则解析后续字符直到一个非数字(”123blue”–>123;”22.5”–>22);能识别八进制十六进制(parseInt(“016”,8))
- String类型:
*字符串是不可变的,也就是说,字符串一旦创建,他的值就不能改变。要改变某个变量保存的字符串,首先要消灭原来的字符串再把新的字符串填充该变量
*转换为字符串toString()或使用+(加号操作符)与一个空字符串加在一起 - Object类型:
对象就是一组数据和功能的集合。
六. 操作符
一元操作符 + / -
*放在数值面前,对数值不产生影响直接运算,放在非数值的该操作符会项Number()一样执行转换。位操作符
*按位非~、按位或|、按位与&、按位异或^、左移<<、有符号的右移>>、无符号的右移>>>布尔操作符
*逻辑非–!、逻辑与–&&、逻辑或–|
alert(!false); //true
alert(!"blue"); //false 非空字符串
alert(!0); //true 数值0
alert(!NaN); //true null、NaN、undefined
alert(!123456); //false 任意非0数字(包括Infinity)
alert(!""); //true 空字符串
alert(!obj); //false 对象
加性操作符
*有一个操作数是NaN返回NaN
*有一个操作数是字符串,则将另一个操作数转换为字符串再字符串连接关系操作符
* <、>、<=、>
*如果是两个字符串对比,则比较两字符串中对应位置的每个字符的字符编码值
*如果有一个操作数是数值,则将另一个转换为数值进行比较,任何与NaN比较都返回false
-相等操作符
*相等和不相等——先转换在比较
*全等和不全等——仅比较而不转换
七. 语句
*if、while、do-while、for、for-in、label、break和continue、with、switch
八. 函数
*执行完return就停止并立即退出出,位于return后面的代码不会执行
*arguments对象与数组类似但不是Array实例。所有参数都是传递值不是引用传递。arguments对象中的值会自动反应到对应的命名参数,虽然值同步但是他们的内存是独立的。