作用域
=>变量起作用的范围
=>全局作用域和局部作用域
局部作用域: 在函数体中作用范围
var num =100
funuction fn(){
var num1=200 //局部作用域
console.log('num1',num1)//输出num1 200
console.log('num',num)// 输出num 100
}
console.log('num1',num1)//控制台报错,超出局部作用域
全局作用域: 整个js全局起作用
console.log('num',num)//控制台输出 num 100
fn()
内层函数可以访问外层函数作用域变量
外层函数不能访问内层函数作用域变量
递归函数
=> 函数自身调用自身 这样的函数称为递归函数
=> 注意:要有递归结束的条件,也要有改变递归的条件代码
递归函数的作用
递归可以解决
后面的结果由前面推导出来的,采用递归简化实现
//1+2+3 求和
function f(n){
//结束的条件
if(n==1){
return 1
}
return f(n-1)+n //f(2)+3 f(1)+2 1
}
var sum=f(3) //f(3)=f(2)+3+f(1)+2+1=6
对象
=>1.面向对线
=>2.现实生活中的对象
具体一个事物
每种对象有自己的特征行为
=> 软件世界
对象 object
属性 方法
创建对象
var jackobj= { } // 创建了一个名为jackobj的空对象
var jackObj={
name:'jack', //姓名属性 =>name属性和jack属性值
age:18 //年龄属性 =>age属性和18属性值
sex:'男' //性别属性
}
//输出格式
console.log('name:',jackobj.name)
//修改属性值
obj.name=rose
console.log('name',jackobj.name)//输出修改后的name属性值
//删除属性
delete obj.name //删除name属性
console.log(jackobj)//检查已是否删除该属性
//添加属性
jackobg.score=98 //添加score属性
console.log(jackobj.score)
//遍历对象属性 for-in 循环
for (var key in jackobj){
// 1. key='name' 2.key='age' 3. key='sex'
console.log('key',key)
console.log('key',key,'value',jackobj[key])
}
//访问属性值,属性值是变量的情况
console.log('name:',jackobj.name)//属性值正常的情况
var _name ='name'
console,log(jackobg[_name])//属属性值是变量的情况
数据类型
var num =100 //number
var name='jack' //string
...
复杂数据类型
var obj={name:'jack',age:18}
obj 数据类型名 -> Object
创建对象 new 语句
字面量方式
var obj={
name:'jack'
}//空对象
构造函数方式
var obj =new Object()//空对象
var Object.name='jack'
key/value -> 键/值对的集合
数组 Array
数组
1. 作用:储存一系列有序数据的集合
2.创建数组
var arr= [] //创建空数组
var arr=[1,2,3,4,'jack',true]
3. 索引号(下标)
4.访问数组元素
5.数组长度(元素个数)
6.遍历数组
for
7.创建数组方式
构造函数
var arr= new Array() 空数组
字面量
var arr=[] 空数组
length 属性
arr.length
arr[0]
1.创建数组
var arr=[10,20,30,40]//0 1 2 3
//2,访问数组数据
console.log('arr[0]:',arr[0])
//3.数组长度
console.log('length>>:',arr.length)
//4.遍历数组,表示数组索引量从0开始
for(var i=0;i <arr.length;i++){
console.log(arr[i])
}
//5.构建函数创建数组
var arr1=new Array(100,200,300,400,500)
for (var i=0;i<arr1.length;i++){
console.log(arr1[i])
}
//6.创建数组只有一个元素,表示创建一个空数组,长度是5 length=5
var arr2=new Array(5)
console.log('arr2.length>>>',arr2.length){
for(var i=0;i<arr2.length;i++){
console.log(arr2[i])
}
}
//7.直接控制台打印
console.log(arr)
*/
/*
访问规则
var num=100
function fun1(){
var num1=200
console.log('fun1 num',num)//输出fun1 num 100
function fun2{
var num2=300
console.log('fun2 num',num)//输出fun2 num 100 上上级作用域找,直至全局作用域找
console.log('fun2 num1',num1)//输出fun2 num1 200 上级作用域找
console.log('fun2 num2',num2)//输出fun2 num2 300 当前作用域找
console.log(num3)// 全局作用域找未找到直接报错
}
fun2()
}
fun1()