码迷,mamicode.com
首页 > 其他好文 > 详细

变量提升和函数声明提前

时间:2018-05-20 14:22:32      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:判断   定义   var   console   语句   不能   通过   nbsp   表达   

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()‘)

}

变量提升和函数声明提前

标签:判断   定义   var   console   语句   不能   通过   nbsp   表达   

原文地址:https://www.cnblogs.com/love-life-insist/p/9063097.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!