我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

前端-张静博-2023-5-31

[复制链接]
JBZ 发表于 2023-6-14 18:48:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、学习内容
函数的应用场景和this的指向问题
// 1.全局中创建和使用函数 - this指向是window
function fn() {
  console.log('fn')
  console.log(this)
}
window.fn()

// 2.事件中的函数 - this指向了事件的触发者
const btn = document.querySelector('button')
btn.onclick = function () {
  console.log('btn')
  console.log(this)
}

// 3.定时器中的函数 - this指向了window
setInterval(function () {
  console.log('定时器')
  console.log(this)
}, 2000)

// 4.构造函数 - this指向了实例化对象
function Person(age) {
  this.age = age
}
Person.prototype.sayAge = function () {
  console.log(this.age)
}
const p1 = new Person(18)
p1.sayAge()
console.log(p1)

// 5.箭头函数 - this没有指向的。它的this就是父级的this
// 6.IIFE(立即执行函数)
; (function () {
  console.log(this)
})();

(function () {
  console.log(this)
}());
1.严格模式的概念
在ECMAScript5标准中,JavaScript提出了严格模式的概念
        严格模式是一种具有限制性的Javascript模式,从而使代码隐式脱离了“懒散模式”
        支持严格模式的浏览器在检测到代码中有严格模式时,会以更加严格的方式对代码进行检测和执行
严格模式对正常模式的JavaScript语义进行了一些限制:
        严格模式通过抛出错误来消除一些原有的静默(slient)错误;
        严格模式让js引擎在执行代码的时候可以进行更多的优化(不需要对一些特殊的语法进行处理);
        严格模式禁用了在ECMAScript未来版本中可能会定义的一些语法。
开启严格模式:更加规范的书写js代码
        1.全局的严格模式  “use strict”;
        2.立即执行函数中开启严格模式  (function () {      “use strict”  })();
        3.函数中开启严格模式
2.函数
        函数(function):相同代码块的集合 目的:就是为了实现某一特定的功能 函数的创建方式:
  • 函数声明方式创建:在函数创建的前后都可以正常调用它

数据类型
  • 基本数据
  • Number、 String、 Boolean、 null、 undefinde、symbol(es6新增)
  • 对象(引用、地址) Function  Array  Object

函数表达式方式创建:只能在函数的后面调用(如果使用var,存在预解析以及变量提升)
3.函数和this关系
  • 全局函数中的this是window(严格模式下是undefined)

   2.事件中this指向事件的触发者
   3.定时器中this指向window
   4.构造函数中的this指向实例对象
    5.箭头函数中this没有指向(它的this就父级的this)
4.闭包
         JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。
·        闭包(closure):有权访问另一个函数作用域中的变量的函数
        闭包就是函数。 闭包的作用:扩展了变量的作用范围。(外部可以访问内部的变量) 结构: 外层函数的变量 + 内层函数 作用域
  • 全局作用域
    • 函数可以访问由函数内部定义的变量;函数也可以访问函数外部定义的变量

  • 局部作用域(函数) 作用域链:内部可以访问外部的变量
  • 变量生命周期
    • 全局变量的作用域是全局性的,即在整个JavaScript程序中,全局变量处处都在。
      而在函数内部声明的变量,只在函数内部起作用。这些变量是局部变量,作用域是局部性的;函数的参数也是局部性的,只在函数内部起作用。




二、遇到问题
三、是否解决
回复

使用道具 举报

关注0

粉丝0

帖子53

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026