数据类型、==与===、数组、对象、变量、字符串
console.log();
alert();
prompt();
confirm();
1、数据类型:
Number(整数、浮点数、NaN、Infinity)、字符串、布尔值、数组、null、undefined
注意:JavaScript把null
、undefined
、0
、NaN
和空字符串''
视为false
,其他值一概视为true
2、==与===
==比较,它会自动转换数据类型再比较
===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较
推荐使用===
3、数组
数组是一组按顺序排列的集合,集合的每个值称为元素。数组可以包括任意数据类型
定义: -- [1,2,3.14,'Hello',null,ture];
--new Array(1,2,3);
Array长度:使用length
改变元素值:通过索引的方式
indexOf():
来搜索一个指定的元素的位置
slice():
就是对应String的substring()
版本,它截取Array
的部分元素,然后返回一个新的Array
(注意:slice()的起止参数包括开始索引,不包括结束索引;如果不给slice()
传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array)
push():
向Array
的末尾添加若干元素
pop():
把Array
的最后一个元素删除掉
1 var arr = [1, 2]; 2 arr.push('A', 'B'); // 返回Array新的长度: 4 3 arr; // [1, 2, 'A', 'B'] 4 arr.pop(); // pop()返回'B' 5 arr; // [1, 2, 'A'] 6 arr.pop(); arr.pop(); arr.pop(); // 连续pop 3次 7 arr; // [] 8 arr.pop(); // 空数组继续pop不会报错,而是返回undefined 9 arr; // []
unshift():向Array
的头部添加若干元素shift()
:把Array
的第一个元素删掉
1 var arr = [1, 2]; 2 arr.unshift('A', 'B'); // 返回Array新的长度: 4 3 arr; // ['A', 'B', 1, 2] 4 arr.shift(); // 'A' 5 arr; // ['B', 1, 2] 6 arr.shift(); arr.shift(); arr.shift(); // 连续shift 3次 7 arr; // [] 8 arr.shift(); // 空数组继续shift不会报错,而是返回undefined 9 arr; // []
sort():
可以对当前Array
进行排序,它会直接修改当前Array
的元素位置,直接调用时,按照默认顺序排序(注意:不是从小到大排序)reverse():
把整个Array
的元素给掉个个,也就是反转
splice():
修改Array
的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素
1 var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle']; 2 // 从索引2开始删除3个元素,然后再添加两个元素: 3 arr.splice(2, 3, 'Google', 'Facebook'); // 返回删除的元素 ['Yahoo', 'AOL', 'Excite'] 4 arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle'] 5 // 只删除,不添加: 6 arr.splice(2, 2); // ['Google', 'Facebook'] 7 arr; // ['Microsoft', 'Apple', 'Oracle'] 8 // 只添加,不删除: 9 arr.splice(2, 0, 'Google', 'Facebook'); // 返回[],因为没有删除任何元素 10 arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
concat()
:把当前的Array
和另一个Array
连接起来,并返回一个新的Array
(注意:
concat()
方法并没有修改当前Array
,而是返回了一个新的Array;
)oncat()
方法可以接收任意个元素和Array
,并且自动把Array
拆开,然后全部添加到新的Array
里
1 var arr = ['A', 'B', 'C']; 2 arr.concat(1, 2, [3, 4]); // ['A', 'B', 'C', 1, 2, 3, 4]
join():把当前Array
的每个元素都用指定的字符串连接起来,然后返回连接后的字符串;如果Array
的元素不是字符串,将自动转换为字符串后再连接。
推荐使用:[]
注意: --直接给Array
的length
赋一个新的值会导致Array
大小的变化
--如果通过索引赋值时,索引超过了范围,同样会引起Array
大小的变化
--在编写代码时,不建议直接修改Array
的大小,访问索引时要确保索引不会越界
4、对象
JavaScript的对象是一组由键-值组成的无序集合。
键:都是字符串类型
值:任意数据类型
怎样创建对象?
--用一个{...}
表示一个对象,键值对以xxx: xxx
形式申明,用,
隔开
如何访问对象属性?
--通过.
操作符完成object.prop,但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用''
括起来
1 var xiaohong = { 2 name: '小红', 3 'middle-school': 'No.1 Middle School' 4 };
--xiaohong
的属性名middle-school
不是一个有效的变量,就需要用''
括起来。访问这个属性也无法使用.
操作符,必须用['xxx']
来访问
1 xiaohong['middle-school']; // 'No.1 Middle School' 2 xiaohong['name']; // '小红' 3 xiaohong.name; // '小红'
注意:JavaScript规定,访问不存在的属性不报错,而是返回undefined
由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性:
1 var xiaoming = { 2 name: '小明' 3 }; 4 xiaoming.age; // undefined 5 xiaoming.age = 18; // 新增一个age属性 6 xiaoming.age; // 18 7 delete xiaoming.age; // 删除age属性 8 xiaoming.age; // undefined 9 delete xiaoming['name']; // 删除name属性 10 xiaoming.name; // undefined 11 delete xiaoming.school; // 删除一个不存在的school属性也不会报错
如果我们要检测xiaoming
是否拥有某一属性,可以用in
操作符
1 var xiaoming = { 2 name: '小明', 3 birth: 1990, 4 school: 'No.1 Middle School', 5 height: 1.70, 6 weight: 65, 7 score: null 8 }; 9 'name' in xiaoming; // true 10 'grade' in xiaoming; // false
不过要小心,如果in
判断一个属性存在,这个属性不一定是xiaoming
的,它可能是xiaoming
继承得到的
要判断一个属性是否是xiaoming
自身拥有的,而不是继承得到的,可以用hasOwnProperty()
方法
1 var xiaoming = { 2 name: '小明' 3 }; 4 xiaoming.hasOwnProperty('name'); // true 5 xiaoming.hasOwnProperty('toString'); // false
5、变量
变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次
1 var a = 123; // a的值是整数123 2 a = 'ABC'; // a变为字符串
注意:如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量
6、字符串
获取长度:通过length
获取某个指定位置的字符:通过索引,索引从0开始
toUpperCase():
把一个字符串全部变为大写
toLowerCase():
把一个字符串全部变为小写
indexOf():
会搜索指定字符串出现的位置
substring():
返回指定索引区间的子串
1 var s = 'Test'; 2 s[0] = 'X'; 3 alert(s); // s仍然为'Test'
注意:字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果