1数组的创建
var 数组名 = new Array(); // 创建一个新的空数组
var 数组名 = [];// 利用数组字面量创建空的数组
var 数组名 = ['1111','2222','3333'];// 创建带初始值带的数组
2数组的访问
索引(下标):用来访问数组元素的序号(数组下标从0开始)
var arr = [1,2,3];// 定义数组
alert(arr[1]);// 获取数组中的第2个元素
3数组的遍历
var arr = [1,2,3,4,5];
for(var i=0; i<5; i++) {
console.log(arr[i]);
}
4数组的长度
使用'数组名.length'可以访问数组元素的数量
var arr = [1,2,3,4,5];
for(var i=0; i<arr.length; i++) {
console.log(arr[i]);
}
5新增数组元素
通过修改length长度新增数组元素,length属性时可读写的,新增的元素未给值,默认值就是underfined
通过修改数组索引新增数组元素,当下标值不为空时,会覆盖原来的值,当下标值为空时,则新增数组元素
JavaScript函数
1声明函数
function 函数名() {
//函数体
}
var 变量名 = function() {
//函数体
};
2调用函数
函数名();
函数的参数
function 函数名(形参1,形参2...) {
//函数体
}
函数名(实参1,实参2...);
如果实参的个数多于形参的个数,会取到形参的个数
如果实参的个数少于形参的个数,多余的形参定义为undefined,结果为NaN
3return语句
return能够终止函数并且返回一个值,若有多个值,则以最后一个值为准
function 函数名() {
return 需要返回的结果;
}
console.log(函数名());
4arguments
当我们不确定有多少个参数传递的时候,可以用arguments来获取,在JavaScript中,arguments实际上是当前函数的一个内置对象,所有函数都放置了一个arguments对象,arguments对象中存储了传递的所有实参
function fn() {
console.log(arguments);
}
fn(1,2,3);// [1,2,3]
arguments展示形式是一个伪数组,因此可以进行遍历
伪数组具有length属性,按索引方式储存数据,不具有数组的push、pop等方法
JavaScript作用域
通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域
变量的作用域
1全局作用域
整个script标签或者一个单独的js文件
在全局作用域下的变量就是全局变量
2局部作用域
在函数内部就是局部作用域,这个代码的名字只在函数内部起作用
在局部作用域下的就是局部变量
2作用域链
内部函数访问外部函数的变量,采取的是链式查找的方式来决定采取哪个值,简单来说就是就近原则
JavaScript预解析
JavaScript代码是由浏览器中的JavaScript解析器来执行的,JavaScript解析器在运行JavaScript代码的时候分为两步:预解析和代码执行
1预解析
预解析分为变量预解析(变量提升)和函数预解析(函数提升)
js引擎会把js里面所有var和function提升到当前作用域的最前面
变量提升就是把所有的变量声明提升到当前作用域的最前面,不提升赋值操作
函数提升就是把所有的函数声明提升到当前作用域的最前面,不调用函数
2代码执行
按照代码书写的顺序从上往下执行
JavaSpript对象
对象是一个具体的事物,在JavaScript中,对象是一组无序的相关属性和方法的集合,所有事物都是对象,例如字符串、数值、数组、函数等
1创建对象
字面量创建对象
对象字面量就是花括号{}里面包含了表达这个具体对象的属性和方法
var obj = {
uname:'阿巴',
age:18,
sayHi: function() {
console.log('hi');
}
}
对象里面的属性或者方法我们采用键值对的形式'属性名:属性值'
多个属性或者方法中间用逗号隔开
方法冒号后面跟的是一个匿名函数
new Object创建对象
var obj = new Object();
obj.uname = "阿巴怪";
obj.age = 18;
obj.sex = '男';
obj.sayHi = function() {
console.log('hi');
}
构造函数创建对象
构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new运算符一起使用
function 构造函数名() {
this.属性 = 值;
this.方法 = function() {}
}
new 构造函数名();
构造函数名字首字母要大写
构造函数不需要return就可以返回结果
调用构造函数必须使用new
构造函数时,方法和属性前面必须添加this
6.2使用对象
调用对象的属性,采用'对象名.属性名的'方式或者'对象名['属性名']'
console.log(obj.uname);
console.log(obj['age']]);
调用对象的方法,采用'对象名.方法名()'
obj.sayHi();
for in遍历对象
for (变量 in 对象) {
console.log(变量);// 变量输出得到的是属性名
console.log(对象[变量]);// 对象[变量]输出得到的是属性值
}