变量提升和函数声明提前

Posted INSTANCE_SELF

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量提升和函数声明提前相关的知识,希望对你有一定的参考价值。

1. instanceof是如何判断的?

  * 表达式: A instanceof B

  * 如果B函数的显式原型对象在A对象的原型链上, 返回true, 否则返回false

2. Function是通过new自己产生的实例

 

/////////////////////////////////面试题///////////////////////////////////////////////////

function A () {

  }

  A.prototype.n = 1

  var b = new A()

  A.prototype = {

    n: 2,

    m: 3

  }

  var c = new A()

  console.log(b.n, b.m, c.n, c.m)

 

 

  /*

   测试题2

   */

  function F (){}

  Object.prototype.a = function(){

    console.log(‘a()‘)

  }

  Function.prototype.b = function(){

    console.log(‘b()‘)

  }

 

  var f = new F()

  f.a()

  // f.b()

  F.a()

  F.b()

3:函数的提升

 1. 变量声明提升

  * 通过var定义(声明)的变量, 在定义语句之前就可以访问到

  * 值: undefined

2. 函数声明提升

  * 通过function声明的函数, 在之前就可以直接调用

  * 值: 函数定义(对象)

3. 问题: 变量提升和函数提升是如何产生的?

     面试题 : 输出 undefined

   */

  var a = 3

  function fn () {

    console.log(a)

    var a = 4

  }

  fn()

 

  console.log(b) //undefined  变量提升

  fn2() //可调用  函数提升

  // fn3() //不能  变量提升

 

  var b = 3

  function fn2() {

    console.log(‘fn2()‘)

  }

 

  var fn3 = function () {

    console.log(‘fn3()‘)

}

以上是关于变量提升和函数声明提前的主要内容,如果未能解决你的问题,请参考以下文章

函数,函数的四种定义,

JS变量提升补充

js中的函数提升和变量提升

10.19

10.9号函数的定义

JavaScript变量提升