数据类型、==与===、数组、对象、变量、字符串

console.log();
alert();

prompt();

confirm();

 

1、数据类型:

Number(整数、浮点数、NaN、Infinity)、字符串、布尔值、数组、null、undefined

注意:JavaScript把nullundefined0NaN和空字符串''视为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的元素不是字符串,将自动转换为字符串后再连接。

推荐使用:[]

注意: --直接给Arraylength赋一个新的值会导致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'

注意:字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果

posted @ 2018-11-20 12:53  FanYiZhan  阅读(182)  评论(0编辑  收藏  举报