jsday05
1.变量作用域
局部作用域:在函数中作用范围
全局作用域:整个js全局作用
关系
内层可以访问外层作用域变量
外层不可以访问内层作用域变量
2.变量使用规则
访问规则
1.先访问自己的作用域,如果有,就拿
2.没有,就往上一级看,如果有就拿走
3.如果没有,就往全局变量做找,如果有,就拿走‘
4,没有,则报错
赋值规则
1.先访问自己的作用域,如果有,就赋值
2.没有,就往上一级看,如果有就赋值
3.如果没有,就往全局变量做找,如果有,就拿走赋值
4,没有,则将访问的变量定义为全局变量
3.作用域链
变量访问或者赋值时,先从自己的作用域从发, 如果在自己的作用域中,无的话,往上一层去看, 层层递进,直到到达全局作用域, 这样形成的一条通过层层作用域的链子, 或者方式为作用域链
4.递归函数
函数自身调用自身,这样的函数称为递归函数
注意:递归结束的条件
改变递归条件的代码
递归函数作用
1,结果由前面推导出来,可以采用递归简化实现
对象
对象
现实生活中的对象 具体一个事物
软件世界 对象 Object 属性 方法
创建对象 var jackObj={}//创建空对象 var jackObj={ name:"jack"//姓名属性 =》name属性名和jack属性值构成 age:18//年龄属性 }
创建对象-new语句 字面量方式 var obj={ name:'jack', age:18, 属性:属性值 } 构造函数方式 var obj=new Object()//空对象 obj.name='jack', obj.age=18, 属性=属性值
对象的基本使用方法:
//obj为对象,创建对象 var obj = { name: 'jack',//对象属性 age: 18, sex: '男' } // 访问对象属性 console.log("name" + obj.name + "age" + obj.age + obj.sex) //修改属性值 obj.name = 'rose' console.log('name', obj.name) //删除属性 delete obj.name console.log(obj) //添加属性 obj.score = 98 console.log(obj) // 遍历对象 for-in for (var key in obj) { console.log('key', key,'value',obj[key])//key age key sex key score } //key为输出的属性名 //访问属性值,属性名是变量情况 console.log('name',obj.name) var _name="name" console.log(obj[_name]) console.log(obj['name'])
数据类型
var num=100//number var name='jack'//string 复杂数据类型 var obj={name:'jack',age:18} obj数据类型名-》object
数组
数组属于复杂数据类型
Object var obj={ name:'jack', age:18 }
作用:key/value->键/值对的集合
数值 Array 存储一系列有序数据的集合
数组 Array 1.创建数组
var arr=[]//创建空数组
var arr=[1,2,'jack',true]
2.索引号(下标): 0 , 1, 2.。。。n
3.访问数组元素
方法一:控制台打印
console.log("arr[]",arr[0],arr[1])
方法二:创建变量,打印
4.数组长度(元素个数)
length属性 arr.length
5.遍历数组 for循环
创建数组的方式
构造函数 var arr=new Array()//空数组 括号里面只有一个数字,表示该数组有几个 字面量 var arr=[]//空数组