JS-函数进阶

JS-函数进阶

1. 函数的定义方式

  1. 函数声明

    function hxx(){
      // code here
    }
    
  2. 函数表达式(匿名函数)

    let fn = function(){
      // code here
    }
    
  3. new Function (构造函数)

    let fn = new Function('参数1','参数2','函数体')
    
  4. PS:

    1. Function 里的参数必须是字符串格式
    2. 所有函数都是是 Function 的实例
    3. 函数也属于对象

函数的原型图

在这里插入图片描述

2.函数调用的方式

  1. 普通函数
  2. 作为对象的方法
  3. 构造函数
  4. 绑定事件函数
  5. 定时器函数
  6. 立即执行函数

3.函数里的this

调用方法this的指向
普通函数调用window
构造函数调用实例对象,原型对象里面的方法也指向实例对象
对象方法调用该方法所属对象
事件绑定函数绑定事件对象
定时器函数window
立即指向函数window

4.严格模式

1.什么是严格模式?

ES5 的严格模式是采用具有限制性 JavaScript 变体的一种方式,即在严格的条件下运行 JS 代码。

2.开启严格模式

严格模式可以应用到整个脚本或个别函数中

​ 1.为整个脚本开启严格模式

<script>
	"use strict";
  // 在整个标签内都开启了严格模式
</script>

​ 2.为一个函数开启脚本

function fn(){
  "use strict";
  // 整个函数内都开启了严格模式
}

3. 严格模式下的变化

1. 关于变量:1.取消变量提升,所有变量必须先声明再使用;2.严禁删除已经声明的变量 delete x;

2.严格模式下this的指向问题

  1. 严格模式下全局作用域里的函数里的this 指向 undefined
  2. 严格模式下 构造函数不加new 调用,this指向是undefined 会报错
  3. 定时器的this还是指向 window
  4. 事件和对象还是指向调用者

3.函数的变化

  1. 函数不能有重名的参数
  2. 函数必须声明再顶层,非函数的 “块作用域内” 不允许声明函数;比如在 if for 等块作用域里

事件和对象还是指向调用者

3.函数的变化

  1. 函数不能有重名的参数
  2. 函数必须声明再顶层,非函数的 “块作用域内” 不允许声明函数;比如在 if for 等块作用域里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值