回顾
作用域:
作用的范围
全局作用域:在函数外定义的变量,在页面的任何一个地方都可以使用
局部作用域: 在函数内定义的变量,只能在函数内使用
在函数中声明变量不加var 就是全局变量
作用域链:如果当前作用域没有,则向父级作用域查找,如果还没有,继续向父级作用域,一直找到全局作用域,如果还没有,报错
形参 是局部作用域
一旦进入作用域,就启动js解析器
1:在作用域中寻找一些东西 var function 形参
//找到var后,将var后的变量名提取出来,并给他初始化一个值undefined
//变量和函数同名,丢变量,保函数
//当有多个scripte标签时,从上到下依次解析并执行第一个script标签,然后下一个,依次类推
//在上面script标签中声明的东西,下面script标签中都可以使用
//下面script标签中声明的东西,上面使用会报错
2:逐行解读代码
1:执行表达式
2:函数调用
一,预解析 var function 形参
二,逐行解读代码
1:执行表达式
2:函数调用
arguments
function fn() {
// arguments 接收调用函数时的所有实参
console.log(arguments)
}
fn(12, 34, 5, 6, 78, 84, 4, 3, 2, 2, 12, 5)
匿名函数
// 1. 将匿名函数赋值给一个变量
// var fn = function () {
// alert('hello')
// }
// fn()
// -------------------------------------------
//2.将匿名函数绑定给一个事件
// document.onclick = function () {
// alert(0)
// }
// -------------------------------------------
// 3匿名函数自我执行
// ;(function () {
// alert(123)
// })()
// ------------------------------------------------
// 4匿名函数的返回值(将一个匿名函数的返回值赋值给一个变量)
// var num = (function () {
// return 3
// })()
// alert(num)
// --------------------------------------
// 5 输出一个匿名函数的返回值
// alert(
// (function () {
// return 'hello'
// })()
// )
// -----------------------------------
// 6 给匿名函数传递参数
var sum = (function (a, b) {
return a + b
})(3, 4)
alert(sum)
递归
// 递归:函数自己调用自己的过程
// 本质 :实现了循环
// 1~n之间所有数的和
function fnSum(n) {
// 结束条件
if (n === 1) {
return 1
}
return n + fnSum(n - 1)
}
// console.log(fnSum(100))
// ----------------------------
// 5的阶乘 n = 5
function fnFac(n) {
// 结束条件
if (n === 1) {
return 1
}
return n * fnFac(n - 1) //5*4*3*2*1
}
alert(fnFac(5))
对象
世界万物皆对象;
object,一切具有本质特征和行为的事物
属性:事物的本质特征
方法: 事物的行为
一个鼠标
属性(本质特征):大小 形状 颜色
事物的行为: 干什么事情 --点击 选择
一个人
属性(本质特征):姓名 年龄 身高 体重
事物的行为: 跑步 唱歌 敲代码
类
一类具有共同的本质特征和行为的实物
类是对象的抽象化
对象是类的具体化
一、如何创建对象
/*
变量 只能存储一个值
对象 存储一个对象的所有信息 姓名,年龄,成绩.... 一条数据
*/
// 创建对象
// 1:字面量方式 {key:value,key:value}
var obj = {
name: '张三',
age: 12,
showName: function () {
return this.name
},
showAge: function () {
return this.age
},
}
// new 构造函数----放在高级
二、如何访问对象中的属性和方法
// 访问对象中的属性和方法
var o = {
name: 'lisi',
age: 45,
score: 100,
showAge: function () {
// this 就是o这个对象
console.log(this.age)
},
}
// 对象.属性
// 对象['属性']
// 对象.方法()
// 对象['方法']()
console.log(o.name)
// 对象中的key值都是字符串类型
console.log(o['name'])
o.showAge()
o['showAge']()