最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 理解js中的作用域

    正文概述 掘金(Yunruohan)   2020-12-21   345

    一、首先我们了解一下作用域的分类

    • 全局作用域:全局作用域是未定义在某个函数内的
    • 函数作用域:局部作用域是定义在某个函数内的

    二、通过实例理解作用域中的声明

    • 例子一:代码中a、b、c和f1均为全局作用域中声明,我们可以将全局理解为一级作用域,全局作用域中声明的函数为二级作用域,函数中的函数称为三级作用域,以此类推,级数大的可以访问级数小的

    理解js中的作用域

    • 图示,函数f1可以访问全局作用域中的声明

    理解js中的作用域理解js中的作用域

    • 例子二:代码中a、b、c、f1、f2都是全局作用域中的声明,d、e、f11是函数作用域中的声明

    理解js中的作用域

    • 图示:f1和f2可以访问全局作用域中的声明,f11可以访问全局作用域和f1中的声明

    理解js中的作用域理解js中的作用域

    三、理解let、const、var

    • js是顺序执行的,所以代码执行后对应的变量和声明是可以被访问的,那么如果在var let const声明的变量之前访问会如何呢

      console.log(a) // undefined console.log(b) // 报错 console.log(c) // 报错 var a = 1 let b = 2 const c = 3

    理解js中的作用域

    • var存在变量提升,但是let和const不会,所以提前访问var声明的变量会打印undefined,不会报错

    • 函数声明也会提升,那么变量提升和函数提升哪个优先呢?

      console.log(a) // [Function: a] var a = 1 function a() { let d = 4 function f11() { return d } return f11() }

    理解js中的作用域

    • 从上面的实例中我们可以看出,函数声明提升优先于变量提升

    四、call、apply和bind

    • 全局作用域中的this:在全局作用域中this指向window,像例一中的a b c和f1都是可以通过window.a window.b window.f1访问到

    • 函数作用域中的this:当函数作为对象的方法被调用时,this指向当前的对象;函数本身也有this对象,像下面的栗子

      var a = function (){ this.d = 4 console.log(this.d) } a() // 4

    理解js中的作用域

    • call、apply和bind会改变当前作用域中this的指向

      let obj1 = { prop: 'obj1' } let obj2 = { prop: 'obj2' } function a() { console.log(this.prop) } a.call(obj1) // obj1 a.call(obj2) // obj2 a.apply(obj1) // obj1 a.apply(obj2) // obj2 a.bind(obj1)() // obj1 a.bind(obj2)() // obj2

    理解js中的作用域

    • 箭头函数的this指向调用它的对象,如果调用它的对象也是一个箭头函数,那么就向再上一级寻找
    • 箭头函数的this指向不可改变

    起源地下载网 » 理解js中的作用域

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元