1. 作用域
1) 作用域 : 变量或者函数能够被访问到的范围
(1) 全局作用域
1.1 最外层函数或者最外层函数外用var声明的变量
1.2 在没有同名的局部变量存在的情况下,函数内部不通过var声明的变量
1.3 window对象的属性及方法
例如 :
window.alert("我是window对象");
(2) 局部作用域
2.1 函数内部的函数及用var声明的变量
2.2 函数的形参
都只作用于该函数
2. 递归函数
1) 递归函数 : 在一个函数内部调用自身 注意 : 回归 , return
例如 : 用递归求阶乘
function fn(n){
if(n===1){
return 1;
}
return n * fn(n-1);
}
console.log(fn(这里填参数))
3. 对象类型
1) 概念
对象类型 : 复杂类型、复合类型、引用类型
对象类型标准值 由花括号和键值对组成
对象 : 一组无序的值的集合
2) 创建 并对其进行增、删、改、查 :
var hero = {
name: "亚索",
gender: "男",
hasai: function () {
console.log("hasai");
},
skill0: "浪客之道",
skill1: "斩钢闪",
skill2: "风之屏障",
skill3: "踏前斩",
};
for (var key in hero) {
console.log(hero[key]);
}
//增
hero.skill4 = "狂风绝息斩";
hero.hasaki = function () {
console.log("hasaki");
};
for (var key in hero) {
console.log(hero[key]);
}
//删
delete hero.hasai;
delete hero.gender;
for (var key in hero) {
console.log(hero[key]);
}
//改
hero.name = "永恩";
for (var key in hero) {
console.log(hero[key]);
}
hero.name = "亚索";
for (var key in hero) {
console.log(hero[key]);
}
//查
console.log(hero.name);
4. 堆和栈
var a = 10;
var b = a;
a = 20;
console.log(b); //10
var obj1 = { a: 10 };
var obj2 = obj1;
//obj1.a = 20;
//obj2.a = 20;
//console.log(obj1); //{a:20}
//内存:栈区(存的是变量名,函数名,基本类型值) 堆区(复杂类型值)
obj1 = { b: 20 }; //重新赋值了,就有了一个新的地址了
console.log(obj2); //{a:10}