美文网首页前端让前端飞
变量提升 & this指向

变量提升 & this指向

作者: Mr哲 | 来源:发表于2018-02-11 16:09 被阅读7次

变量提升

JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。
JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。

定义:变量提升

需要注意的几点

  • 不可跨<script>标签,最高到script顶部
  • 块级作用域提升到函数顶部
  • 函数内部最高提升到函数顶部
  • 被提升的只是定义,而不是初始化赋值
var a = 5
console.log(a+b)
var b = 1

会报错,因为只有变量定义被提升,而赋值操作并不会,错误信息为b为定义

由于最近模块化开发,统一一下变量头部定义比较好,而且方法尽量小便于测试

this 指向

  1. 这个是个难点,之前的经验是看函数调用,在没有call,apply,bind的情况下,就看调用时的环境就好了,定时器和块作用域全局调用,属于全剧函数,也指向window

ps:超时调用的代码都是在全局作用域中执行的,因此函数中this的值在非严格模式下指向window对象,在严格模式下是undefined。 ——《JavaScript高级程序设计》

  1. bind(),call(),apple()的区别:
  • bind() 来实现在指明函数内部 this 指向的情况下去调用该函数(函数不执行), 换句话说, bind() 允许我们非常简单的在函数或者方法被调用时绑定 this 到指定对象上;如果我们将包含 this 的方法赋值给一个变量, 那么 this 的指向也会绑定到另一个对象上
  • call & apply:传入的第一个参数为目标函数中 this 指向的对象(函数执行),apply 和 call 的用法几乎相同, 唯一的差别在于当函数需要传递多个变量时, apply 可以接受一个数组作为参数输入, call 则是接受一系列的单独变量.并且不能用于es6的箭头函数

3.箭头函数重的this:箭头函数内部的this是词法作用域,由定义环境决定,箭头函数中this总是指向外层调用者。

相关文章

  • 变量提升 & this指向

    变量提升 JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。JavaScript 中,变量可以在...

  • ES6需要记忆理解的地方

    let和const命令 1、let和const均无变量提升。2、let变量指向的地址可变,const指向的地址不可...

  • AMP是如何提升性能?

    AMP简介 Google推出移动网页加速项目AMPAMP介绍 AMP是如何提升性能? 以下的优化点是AMP页面能被...

  • 变量指向

  • 网页设计 - 收藏集 - 掘金

    免费且又精致的 HTML/CSS 站点模板 - 前端 - 掘金&amp;amp;amp;amp;amp;l...

  • 一道常被人轻视的前端JS面试题

    题目如下: 答案是: 此题涉及的知识点众多,包括变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量...

  • const指针

    const指针可以指向非const变量, 非const指针不能指向const变量 int (*p)[5] 指向...

  • 前端知识点收集

    JS原理 变量提升与函数提升/是什么,为什么,怎么办this的指向以及当return了一个对象之后跨域:JSONP...

  • 一道面试题引发的"血案"

    题目及答案: 此题涉及的知识点众多,包括变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对...

  • 一条有趣的前端面试题(4)

    此题涉及的知识点众多,包括变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属...

网友评论

    本文标题:变量提升 & this指向

    本文链接:https://www.haomeiwen.com/subject/itpktftx.html