分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

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

发布时间:2023-09-06 01:46责任编辑:赖小花关键词:js编译

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的预编译、全局变量、局部变量相关知识

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved