首页 > 编程语言 > 详细

javascript预解释

时间:2016-03-24 10:05:10      阅读:296      评论:0      收藏:0      [点我收藏+]

1.在js代码从上到下执行之前,浏览器首先会把所有带var 和 function关键字的进行提前的声明或者定义;

  声明(declare):相当于种树时候"挖坑" var num;(var 一个变量) 只声明没有定义的时候,num的默认值是undefined

  定义(defined):相当于种树时候"栽树" num=12;(给变量赋值)

  在预解释的时候,带var和带function的还不一样:

  var:只是提前的声明(定义赋值的部分是在代码执行的时候完成的)

  function:提前的声明+定义

  在预解释的时候不管条件是否成立判断体中的代码都要进行预解释

 

  在全局作用域下 num=12的意思是给window这个浏览器对象增加一个叫做num的属性名,属性值是12-->window.num=12;

  var num=12; 在全局作用域(window)下,这样的也相当于给window定义了一个叫做num的属性,属性值是12

  区别:带var的可以在代码执行之前进行预解释(提前声明),而不带var的不可以;

  带function关键字的在预解释的时候就完成了声明和定义,当代码执行到函数定义那部分的时候,直接的跳过即可(不在重新的处理)

  在js中作用域只有两种 window全局作用域、函数执行形成的私有作用域

  在window下定义的变量叫做全局变量,在私有作用域中定义的变量叫做私有变量

  在函数执行的时候会形成一个私有作用域,首先是给形参赋值,接下来进行预解释,完成后私有作用域下的代码从上到下开始执行

  在私有作用域中出现的变量,首先看是否为私有变量,如果是私有变量,那么函数中用的都是私有变量,否则则向上一级找。

  

  请分析下面的代码:

  var a = 12;
  function fn() {
  var a = 13;
   function f() {
   console.log(a);
   }
   return f;
  }
  function sum() {
  var a = 14;
  var f = fn();
  f();
  }
  sum();
最后输出的结果为13;你分析对了么?

javascript预解释

原文:http://www.cnblogs.com/haibinboke/p/5314234.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!