码迷,mamicode.com
首页 > Web开发 > 详细

js的预编译、全局变量、局部变量相关知识

时间:2018-03-25 00:01:04      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:fine   UNC   highlight   body   相关   java   变量声明   aaa   上下   

1、未声明的变量就赋值, 此变量归全局变量window对象所有

console.log(a);   //a is not defined
a=10
console.log(a);  //10 等价于 console.log(window.a)

function test(){
  var a = b = 123;
}
test();
console.log(b)  //123  b未声明就赋值归为window对象所有, 等价于console.log(window.b); 
console.log(a)   //a is not defined

2、一切声明的变量全是window对象的属性。

var aaa=111;
var bbb=222;

var ccc=333;

//等价于 window{aaa:111,bbb:222,ccc:333}

3、预编译发生在函数执行的前一刻,主要有以下四个步骤:

  (1)、创建AO (activation object /执行期上下文)对象; 

  (2)、找形参和变量声明,将变量和形参名称为AO对象属性名,值为undefined;

  (3)、将实参和形参统一; 

  (4)、在函数体里找到函数声明,值赋予函数体;

function fn(a){
  console.log(a);  //? a() { }
  var a = 123;
  console.log(a); //123
  function a(){}
  console.log(a); //123
  var b = function (){}
  console.log(b); //? () { }
}
fn(1);

 

js的预编译、全局变量、局部变量相关知识

标签:fine   UNC   highlight   body   相关   java   变量声明   aaa   上下   

原文地址:https://www.cnblogs.com/zzws/p/8641734.html

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