js:作用域、声明提升、函数的递归、对象的操作与分类-第五天

# 一、复习

1、函数:实现了某个功能的代码段

2、函数的特点:忽略细节,重复使用,选择使用

3、函数的创建

    - 声明式:function 函数名(){}

    - 赋值式:var 变量名 = function(){}

4、函数的执行

    - 直接执行 变量()

    - 事件执行:事件源,on事件类型 = 函数

5、函数的分类

    - 有名函数

    - 无名函数:非正常函数,不能直接使用,只能作为值存在

        - 赋值式创建函数的值

        - 作为参数

        - 作为返回值

        - 作为事件处理函数

        - 作为匿名函数的函数体

    - 匿名函数

6、函数的入口 - 参数

    - 实参

    - 形参

    - 数量:多个

        - 数量一致时:从左到右,一一对用

        - 形参多:多出来的为undefined

        - 实参多:可以找arguments获取

8、arguments

    - 函数的内部内置数组对象,专门用来接收当前函数所有参数

    - 实参个数:arguments.length

    - 序号、索引:arguments[索引号]

7、函数的出口 - 返回值

    - 将函数内部的执行结果或处理的数据,返回到函数的执行语句上,方便进行二次使用或另作他用

    - 语法 return 数据   一个函数只有一个返回值

    - 一般情况下,只有处理数据的函数,才需要返回值

    - 没有return的函数,默认返回undefined

9、事件类型

    - click、dblclick

# 三、作用域

1、作用域:变量、函数、数据、功能,作用的区域

2、分类

    - 全局:不属于任何函数的语句

    - 局部:某个函数内部的区域

3、作用域之间的访问规则

    - 父作用域不能使用子作用域内部的数据

    - 子作用域能使用父作用域内部的数据

4、变量的读写规则

    - 读(使用)

        - 先在自身作用域查找,找到了就使用,找不到依次向上层作用域查找,任意层找到了,都使用并停止查找,直到顶层都没有找到,报错

    - 写(赋值)

        - 先在自身作用域查找,找到了就修改停止查找,找不到依次向上层作用域查找,任意层找到了,都修改并停止查找,直到顶层都没有找到,直接成名成全局,再做修改

5-不同作用域内变量的特点

    - 全局变量:跟随全局环境,在内存中一直存在,占内存

    - 局部变量:跟随局部环境,局部作用域的概念,变量存在,局部作用域结束,变量被删除

        - 总结:尽量少用全局变量,可以使用匿名函数,生成一个新的作用域,将要使用的数据和多个功能再次包裹

    -     ;(function(){})();

# 四、声明提升

1、声明变量的提升

    - var声明的变量,都会提升到作用域最开始的位置声明,原位置赋值

2、声明函数的提升

    - function声明的函数,会整体提上到作用域的最开始位置

3、当var遇到function

    - 赋值式创建的函数 var fn = function(){}

        - 提升的变量,并没有提升函数

    - 当var 的变量名和function的函数名重名时,var先提升,function后提升覆盖var

# 五、函数的应用

1、递归:在函数的内部执行自身,滥用会造成类型死循环的现象:程序崩溃,死机,内存溢出

    - 利用递归的思想解决程序中的思想,要配合函数的结束语句,适当时跳出递归

    - 正常递归也会消耗大量性能,能不用就不用

function fn(){

    fn();

}

fn();

2、递

    - 不断执行自身

3、归

    - 不断向外返回数据的过程

4、找座位

# 六、对象

1、对象:一种对客观事物的描述,将客观事物以逻辑数据的形式进行描述的过程

    - 无序数据的打包:object对象,标志是{}

    - 有序数据的打包:array对象,标志是[]

2、对象的本质(组成)

    - 键值对数据组成

        - 键和值一一对应,成对出现

        - 键和值之间使用冒号链接,键值之间使用逗哈隔开

            - {color:red,height:20,}

3、对象的意义(作用)

    - 存储数据

    - 编程

4、创建对象

    - 字面量:var obj = {name:'张三'}

    - 构造函数:(创建一个对象) var obj = new Object()

5、任何情况下,两个对象都不相等,如果相等就是一个对象

6、对象的操作

    - 点语法:当对象的属性是具体的值时

    - 中括号语法:当对象的属性是变量时

7、对象的操作

    - 增

        - obj.sex = '男'

        - obj['sex'] = '男'

    - 删

        - delete obj.sex = '男'

        - delete obj['sex'] = '男'

    - 改

        - obj.sex = '女'

        - obj['sex'] = '女'

    - 查

        - console.log(obj.sex)

        - console.log(obj['sex'])

8、对象的分类

    - 宿主对象:window,docunment

    - 本地对象:特殊对象,构造函数,需要new执行后才能得到具体的对象

        - Object,Number,String,Boolean

    - 内置对象:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值