目录
数据类型
Number
JavaScript不区分整数和浮点数,统一用Number表示。Number可以直接做四则运算,规则和数学一致。
以下都是合法的Number类型:
123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity
字符串
字符串是以单引号’或双引号”括起来的任意文本。
多行字符串
JavaScript的字符串就是用”或”“括起来的字符表示。如果字符串内部既包含’又包含”可以用转义字符\来标识
‘I\’m \”OK\”!’;
表示的字符串内容是:I’m “OK”!
ES6
标准新增了一种多行字符串的表示方法,用反引号 ...
表示:
`这是一个
多行
字符串`;
模板字符串
多个字符串连接起来,可以用+号连接:
var name = ‘小明’;
var age = 20;
var message = ‘你好, ’ + name + ‘, 你今年’ + age + ‘岁了!’;
ES6
新增了一种模板字符串,表示方法和上面的多行字符串一样,但是它会自动替换字符串中的变量:
var name = ‘小明’;
var age = 20;
var message = `你好, name,你今年 n a m e , 你 今 年 {age}岁了!`;
alert(message);
操作字符串
var s = ‘Hello, world!’;
s.length; // 13var s = ‘Hello, world!’;
s[0]; // ‘H’
s[6]; // ’ ‘
需要特别注意
的是,字符串是不可变
的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果:
var s = ‘Test’;
s[0] = ‘X’;
alert(s); // s仍然为’Test’
toUpperCase()
字符串全部变为大写
toLowerCase()
字符串全部变为小写
indexOf()
搜索指定字符串出现的位置
substring(),substring(x,y)
返回指定索引区间的子串
布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有true、false两种值。
比较运算符
与日常比较运算符大同小异。
JavaScript允许对任意数据类型做比较:
false == 0; // true
false === 0; // false
第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。
由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。
特别的:
NaN === NaN; // false
唯一能判断NaN的方法是通过isNaN()函数:
isNaN(NaN); // true
null和undefined
》null表示一个“空”的值,它和0以及空字符串”不同,0是一个数值,”表示长度为0的字符串,而null表示“空”。
》undefined表示值未定义。undefined仅仅在判断函数参数是否传递的情况下有用。
数组
定义,要取得Array的长度,直接访问length属性:
var arr = [1, 2, 3.14, ‘Hello’, null, true];
arr.length; // 6
直接给Array的length赋一个新的值会导致Array大小的变化(多出没赋值部分为undefined)
arr.length = 8;
arr; // arr变为[1, 2, 3.14, ‘Hello’, null, true, undefined, undefined]
不同于字符串,Array可以通过索引把对应的元素修改为新的值
arr[1] = 3;
arr; // arr现在变为[1, 3, 3.14, ‘Hello’, null, true]
在编写代码时,不建议直接修改Array的大小,访问索引确保索引不越界导致的部分值出现undefined。
indexOf()
搜索一个指定的元素的位置
slice()
截取Array的部分元素,然后返回一个新的Array:
var arr = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’];
arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3
: [‘A’, ‘B’, ‘C’]
arr.slice(3); //从索引3开始到结束
: [‘D’, ‘E’, ‘F’, ‘G’]
var aCopy = arr.slice();
aCopy; // [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’]
aCopy === arr; // false
push()和pop()
理解为堆栈的进栈、出栈(后进先出:在最后面添加,在最后面删除)即可。push()向Array的末尾添加若干元素
,pop()则把Array的最后一个元素
删除掉。
var arr = [1, 2];
arr.push(‘A’, ‘B’); // 返回Array新的长度: 4
arr; // [1, 2, ‘A’, ‘B’]
arr.pop(); // pop()返回’B’
arr; // [1, 2, ‘A’]
arr.pop(); arr.pop(); arr.pop(); // 连续pop 3次
arr; // []
arr.pop(); // 空数组继续pop不会报错,而是返回undefined
arr; // []
unshift()和shift()
与上一个相反,unshift()头部添加若干元素,shift()则把Array的第一个元素删掉。
var arr = [1, 2];
arr.unshift(‘A’, ‘B’); // 返回Array新的长度: 4
arr; // [‘A’, ‘B’, 1, 2]
arr.shift(); // ‘A’
arr; // [‘B’, 1, 2]
arr.shift(); arr.shift(); arr.shift(); // 连续shift 3次
arr; // []
arr.shift(); // 空数组继续shift不会报错,而是返回undefined
arr; // []
sort()
排序,默认从小到大
reverse()
反转
splice()万能修改
它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素
splice(起始索引,删除数目,“添加的东西”,…)
concat()连接
把当前的Array和另一个Array连接起来,并返回一个新的Array
var arr = [‘A’, ‘B’, ‘C’];
var added = arr.concat([1, 2, 3,4]);
added; // [‘A’, ‘B’, ‘C’, 1, 2, 3,4]
arr; // [‘A’, ‘B’, ‘C’]
join()每个元素都用指定的字符串连接起来
var arr = [‘A’, ‘B’, ‘C’, 1, 2, 3,4];
arr.join(‘-‘); // ‘A-B-C-1-2-3-4’
多维数组
var arr = [[1, 2, 3], [4, 5, 6]];//二维
var x = arr[1][1];//5
对象
JavaScript的对象是一组由键-值组成的无序集合:
var person = {
name: ‘Bob’,
age: 20,
tags: [‘js’, ‘web’, ‘mobile’],
city: ‘Beijing’,
hasCar: true,
zipcode: null
};
要获取一个对象的属性,我们用对象变量.属性名的方式:
person.name; // ‘Bob’
person.zipcode; // null
或者
person.[‘name’]; // ‘Bob’
动态添加或删除对象
var xiaoming = {
name: ‘小明’
};
xiaoming.age = 18; // 新增一个age属性
delete xiaoming.age; // 删除age属性
检测xiaoming是否拥有某一属性
‘name’ in xiaoming; // true
‘grade’ in xiaoming; // false
变量
变量不仅可以是数字,还可以是任意数据类型。
var a; // 申明了变量a,此时a的值为undefined
var b=1;//申明了变量 b = 1 ; / / 申 明 了 变 量 b,同时给 b赋值,此时 b 赋 值 , 此 时 b的值为1
var s_007 = ‘007’; // s是一个字符串”007”
var Answer = true; // Answer是一个布尔值true
var t = null; // t的值是null
快捷链接(包含各类实践练习)
全部Javascript学习笔记的目录 Click Here>>