JavaScript组成及其兼容性:
ECMAScript:解释器,翻译,用于实现机器语言和高级语言的翻译器;几乎没有兼容性问题
DOM(Document Object Model):文档对象模型,文档就是HTML文档,它赋予了操作HTML的能力;有一些操作不兼容
BOM(Browser Object Model):浏览器对象模型,操作浏览器,起对象就是浏览器窗口。没有兼容性问题(完全不兼容),很少用,而且用户体验不是很好
变量类型:变量本身并没有类型,它的类型取决于该变量存储的数据的类型
查看数据类型:typeof运算符
常见类型:number、string、boolean、undefined、object、function;可用alert(typeof 变量名) 显示变量类型
注意:一个变量应该只存放一种类型的数据
类型转换:
var a=‘12’; //字符串类型
alert(parseInt(a)+5); //结果返回17,parseInt(a)表示强制转换(又称显式类型转换)
其实parseInt()是一个函数,如当a=‘12px34’时,强制转换后,a=12(整数类型),因为该函数直接扫描字符串,从第一个数字开始记录,当遇到非数字时,自动跳出循环,并把非数字后面的数字字符自动忽略,而只保留第一次遇到的数字字符串,并将其强制转换为整数型数字;当a=‘abd’,即变量字符串中没有数字,则alert(parseInt(a))会返回NaN(Not a Number),由此我们可用if(isNaN(a))进行判断,如果是“非数字”,则显示提示,否则正确运行;
同理的还有parseFloat(a); //把一个字符串转换成浮点型数字
隐式类型转换:==(先转换类型,然后比较)、===(不转换类型,直接比)、减法(因为“减法”在系统中只有“相减”这一种操作,所以机器会默然转换后,相减;而“加法”,可以用于字符串连接,以及转换成数字后“相加”,而机器会默认选择最简单的一步,就是直接进行字符串连接),例如:
var a=5; var b='5'; alert(a==b); //系统会先将他们都转换成int类型,然后再判断,所以返回True
var a=5; var b='5'; alert(a==b); //系统不会转换类型,而进行直接比较,所以结果返回False
变量的作用域(作用范围):
局部变量:定义在函数里面,并且它只能在定义它的函数内部使用;
全局变量:定义在函数体外部的变量,可以使用在整个程序中;
什么是闭包:子函数可以使用父函数中的局部变量(就是闭包),所有的程序中基本上都在使用,不需要太在意(有兴趣的可以百度一下)
命名规范及必要性:
可读性(能看懂)、规范性(符合规则)
匈牙利命名法:类型前缀、首字母大写,如表中所示:
类型 | 前缀 | 类型 | 实例 |
数组 | a | Array | aItems |
布尔值 | b | Boolean | bIsComplete |
浮点数 | f | Float | fPrice |
整数 | i | Integer | iItemCount |
函数 | fn | Function | fnHandler |
对象 | o | Object | oDiv1 |
正则表达式 | re | RegExp | reEmailCheck |
字符串 | s | String | sUserName |
变体变量 | v | Variant | vAnything |
运算符:
算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取模/余);实例:隔行变色、秒转时间、小小计算器
赋值运算符:=、+=、-=、*=、/=、%=
关系运算符:<、>、<=、>=、==、===、!=、!==、
逻辑运算符:&&与、||或、!非 实例:全选、反选
运算符优先级:()优先级最高
var aLi=document.getElementsByTagName('li');
for (var i=0;i<aLi.length;i++){ //各行变色
if(i%2==0){
aLi[i].style.background='#ccc';
}else {
aLi[i].style.background='';
}
} var s=1235;
alert(parseInt(s/6)+'分'+s%60+'秒'); //秒转时间
流程控制:
判断:if、switch、?:(三目运算符) 条件?:语句1:语句2
循环:while、for
跳出:break(跳出循环,执行下面语句)、continue(跳出本次循环,继续执行下一次循环)
真(true):非零数字、非空字符串、非空对象
假(False):数字零、空字符串、空对象、undefined
Json:
什么是Json:(百度百科)JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。(类似于Python中字典(dictionary)类型)
json={name1:value1, name2:value2, name3:value3,……}; //其中name2不能和name1相同,否则value2会把value1覆盖掉;另外value1、value2...类型可以相同,也可以不同。
alert(json.name1);或者用alert(json['a']); //返回的是value1
JSon和数组:
json的元素下标是字符(串),如上面取值语句; 数组的下标是数字,从0开始;
json没有“长度”,即alert(json.length);返回undefined; 而数组有“长度”;
在循环语句中:
for (var i=0; i<arr.length; i++){alert('第'+i+'个东西'+arr[i]);} //数组有两种循环方法
for (var i in arr){alert('第'+i+'个东西'+arr[i]);}
for (var i in json){alert('第'+i+'个东西'+json[i]);} //json的循环方法
JSon和for in
上述介绍了json的循环遍历,但是建议数组循环仍用第一种循环,这样不容易弄混