Javascript标示符是大小写敏感的,首字母必须以 字母、_、$开头。
共有6中数据类型:
1 Undefined类型 只有一个值undefined
2 Null类型 只有一个值null
3 Boolean类型 true false
4 Number类型 123
5 String类型 'abc'
6 Object类型,包括对象数组等
Javascirpt中可以直接使用Json格式声明的对象和数组。
typeof操作符用于检测变量的数据类型。typeof 运算符返回一个用来表示表达式的数据类型的字符串。 因为函数也可以作为参数。所以typeof检测到的类型有6种。
比较容易混淆....像function,对象类型都应该归结为引用类型。
undifined 即变量未初始化 如 var a; 并为对a初始化,所以该变量为Undifineed类型。
boolean 即Boolean类型,值为true 、false。
string即String类型,如"abc",'abc'
number即Number类型 如123
object 即Object类型或者null 如{name:'zhangsan'}, 对于null,它的类型是null。但它typeof返回的是object,但它确实不是Object类型!传说是为了向下兼容才这样做的。
null==undifined返回true,null===undefined 返回false。
!null, !undefined 返回true,true
null==false 返回false
undefined==false 返回false
===恒等于的比较会多一个类型的验证。
对象的声明:使用的Json格式,对象包含属性和方法。Js相当方便灵活
如:
var person = {
name:'zhangsan',
age:18,
chinese:true,
ok:new Object(3),
print:function(){
return this.name+" "+this.age+" "+this.chinese+" "+this.ok;
}
};
delete person.ok; //delete操作符用于删除对象的某个属性
alert(person.print());
对象的构成都是键值对形式。
键可以用引号括或者不括 如name可以是"name"或'name'
键的访问,可以是 对象. 或者 对象['键'] 的方法访问。
上面的person对象包含了属性以及print方法,它的属性又包含了JS的基本数据类型。 this就是当前对象的指针。
数组:
数组的push pop 方法,构成栈数据结构。 push在数组尾部添加元素并返回数组长度,pop弹出尾部的元素并返回该弹出的元素。后进先出。
数组的push shift方法,构成队列数据结构。push在数组尾部添加元素并返回数组长度,shift弹出尾部元素并返回该弹出的元素。先进先出。
push和unshift方法,分别可以在数组的末尾和前端插入元素,并返回最新的数组长度。 注意:在ie浏览器中unshift无法返回数组长度,但可以插入成功。
JS的字面量对象:字面量对象就是除了基本数据类型之外,可以直接标示出的对象。
1. {} 是对象。如 var p = {name:'zk',age:18}; 声明了一个p对象,含有两个属性name,age 等价于new Object()
2. [] 是数组。如 var p = [1,"2",3]; 声明了一个数组,含有三个元素。等价于new Array()
3. /abc/ 是正则表达式。var p = /abc/; 则声明了一个模型为abc的正则表达式。 可以调用p.test p.exec等方法。 等价于 new RegExp().
/abc/i 最后一个斜杆后面是匹配模式。 i是忽略大小写, g全局匹配, m多行匹配
如:
exec方法:多用于获取分组信息
var pattern=/(hi\d{4})/; //匹配hi加四个数字并分组
var a = pattern.exec("hi2013 hi2012"); //exec用正则去匹配一个字符串,成功则返回一个数组,失败则返回null
if(a){
alert(a.length);
alert(a[1]);//数组的index为1开始的元素为匹配到的分组。 index为0的是原字符串。所以索引从1开始。
alert(a[2]);
}else{
alert("匹配失败");
}
test方法:
pattern.test("hi2222");//用正则表达式匹配一个字符串,返回是否匹配。返回值为布尔型。
捕获类型:
前瞻捕获
?= 如abc(?=123) 只有abc后面紧跟123的abc才能被捕获。