1 入门
1.1 基本数据类型
1.1.1 数字 字符串 布尔值 null undefined
1.2 对象数据类型
1.2.1 第一种定义方法
var test = {
name: "叶",
age: 13
}
console.log(test);
1.2.2 第二种定义方法
var test = {}
test.name = "叶小凡";
test.age = 29;
console.log(test);
1.2.3 对象对于属性和方法的调用
第一种
var test = {
name: "叶",
age: 13
}
console.log(test.name);
第二种
var test = function(){
name: "叶",
age: 13
}
var props = "name";
console.log(test[props]);
通过for循环遍历数组来获取属性,此时属性为变量,用第二种方式。
1.3 运算符
加 减 乘 除 取余 自增 自减
2 数组的定义
2.1 常见定义
var test = [1,2,3];
2.2 通过数组对象定义
var test = new Array();
2.3 通过数组对象定义且给数组设置初始空间
var test = new Array(1024);
2.4 通过数组对象定义且给数组赋初值
var test = new Array("叶小凡","叶宗师");
2.5 数组的属性(多长)
var test = new Array(1024);
console.log(test.length);
2.6 数组的方法
push(); 将数据添加到数组末尾
pop();将数组末尾的数据删除
splice();根据参数不同:两个参数,第一个是操作的起始位置,第二个是操作的个数,第三个是在操作位置添加的数据,第四个紧跟第三个数据
3 函数
3.1 第一种定义方法
function test() {
console.log("this is a function test");
}
3.2 第二种定义方法
var test = function(){
console.log("this is also a function test");
}
3.3 作用域
全局作用域和函数作用域,全局作用域对全局有效,函数作用域对函数内部有效。
函数内部作用域可以调用函数外部作用域,但是函数外部的作用域不能调用函数内部的作用域,相当于每个函数都是一个独立的家,但是均摊面积(全局作用域)是公用的。
3.4 参数
对于函数而言,如果有参数,在调用的时候需要传入参数。
function test(a,b){
console.log(a+b);
}
test(1,3);
这样面临一个问题,就是如果传入多余参数,结果是否会失真呢!!!
//这样肯定运行不出来,
function test(a,b){
console.log(a+b);
}
test(1,3,2);
函数中存在一个arguments数组,用来存参数。
3.5 闭包
闭包:函数内部嵌套函数
从作用域的角度来看,建立闭包可以避免函数在函数作用内调用以后销毁,也可以在通过全局作用域调用函数内部的函数。
???
通过闭包可以将函数内部的变量提升,提升为全局变量去操作。那么,为什么不直接去建立一个全局变量呢!!!这不是属于脱裤子放屁嘛!!哎!不对,在你拉肚子时期,真真的不要相信每一个屁,这裤子还是得脱。
哦。哦。哦。
依旧从房子的居住面积(局部作用域)和公摊面积(全局作用域)来看,如何你家里的自行车(变量)放在楼道过道里,他家的电瓶车(变量)也放,那这个公摊面积咋办,所以我们可以把车子放家里,但是我们可以经过公摊面积来将自行车推到楼下。
//闭包展示
function test(){
var a = 0;
return function(){
console.log(a);
}
}
//调用
test()();
3.6 自执行函数
无名但是有型 ()();
可以简化闭包:
var BB = (function test(){
var a = 0;
return function(){
console.log(a);
}
})();
//调用函数
BB();