因为网景开发了JavaScript,一年后微软又模仿JavaScript开发了JScript,为了让JavaScript成为全球标准,几个公司联合ECMA(European Computer Manufacturers Association)组织定制了JavaScript语言的标准,被称为ECMAScript标准。
ECMAScript是一种语言标准,而JavaScript是网景公司对ECMAScript标准的一种实现。
基本语法
JavaScript严格区分大小写,如果弄错了大小写,程序将报错或者运行不正常。
基本数据类型
- 字符串 字符串是以单引号’或双引号"括起来的任意文本
- 坚持使用===比较
- null表示一个“空”的值,它和0以及空字符串’‘不同,0是一个数值,’'表示长度为0的字符串,而null表示“空”。
JavaScript的设计者希望用null表示一个空的值,而undefined表示值未定义。 - 数组
JavaScript的数组可以包括任意数据类型,
var arr = [1, 2, 3.14, 'Hello', null, true];//索引起始为0
- 对象
JavaScript的对象是一组由键-值组成的无序集合。
JavaScript对象的键都是字符串类型,值可以是任意数据类型。 - 变量
变量名是大小写英文、数字、$和_的组合,且不能用数字开头。
变量名也不能是JavaScript的关键字,如if、while等。
在JavaScript中,使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次
本身类型不固定的为动态语言
java语言是静态语言本身类型是固定的
var a = 12;
a="abc"
字符串
JavaScript的字符串就是用’ '或" "括起来的字符表示
如果字符串内部既包含’又包含"怎么办?可以用== 转义字符 ==来标识
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\。
模板字符串
字符串用 + 连接
或
var name = '小明';
var age = 20;
var message = `你好, ${name}, 你今年${age}岁了!`;
var message = '你好' + name + ',你今年' + age + '岁了!'
操作字符串
向字符串中取某个字符,类似数组,从下标0开始。
字符串不会改变,看到的改变是返回的新字符串。
- toUpperCase()把一个字符串全部变为大写
- toLowerCase()把一个字符串全部变为小写
- indexOf()会搜索指定字符串出现的位置
- substring()返回指定索引区间的子串
数组
JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素。
array.length();得到数组长度,给长度赋值会改变数组
var arr = [1, 2, 3];
arr[5] = 'x';
arr; // arr变为[1, 2, 3, undefined, undefined, 'x']
方法
- indexOf()来搜索一个指定的元素的位置,从索引0开始
- slice()不给slice()传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array
- push()向Array的末尾添加若干元素,pop()则把Array的最后一个元素删除掉
- unshift()方法向Array的头部添加若干元素,shift()方法则把Array的第一个元素删掉
- sort排序
- reverse反转
- splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素
var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];
// 从索引2开始删除3个元素,然后再添加两个元素:
arr.splice(2, 3, 'Google', 'Facebook'); // 返回删除的元素 ['Yahoo', 'AOL', 'Excite']
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
- concat()方法把当前的Array和另一个Array连接起来,并返回一个新的Array,并没有修改原来的数组
- join()方法是一个非常实用的方法,它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串:
var arr = ['A', 'B', 'C', 1, 2, 3];
arr.join('-'); // 'A-B-C-1-2-3'
对象
一种无序的集合数据类型,它由若干键值对组成,属性:值,所有的属性都是字符串,值可以是任意数据类型。一般属性名包含特殊字符时要用’ '括起来,访问属性不能用 . 操作,必须用[‘XXX’]访问。
var xiaohong = {
name: '小红',
'middle-school': 'No.1 Middle School'
};
xiaohong['middle-school']; // 'No.1 Middle School'
xiaohong['name']; // '小红'
xiaohong.name; // '小红'
判断对象是否拥有某个属性,用in
判断一个属性是否是对象自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法
条件判断
JavaScript把null、undefined、0、NaN和空字符串’'视为false,其他值一概视为true,因此上述代码条件判断的结果是true。
循环
for循环的一个变体是for … in循环,它可以把一个对象的所有属性依次循环出来
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
if (o.hasOwnProperty(key)) {//hasOwnProperty()过滤掉对象继承的属性
console.log(key); // 'name', 'age', 'city'
}
}
数组也是对象,而它的每个元素的索引被视为对象的属性,因此,for … in循环可以直接循环出Array的索引,循环得到是字符串。
var a = ['A', 'B', 'C'];
for (var i in a) {
console.log(i); // '0', '1', '2'
console.log(a[i]); // 'A', 'B', 'C'
}