js函数和预编译

本文深入探讨了JavaScript中的函数定义,包括命名函数表达式、匿名函数表达式以及函数传参。详细阐述了作用域、预编译过程,如函数声明提升和变量声明提升,并举例说明了预编译的四步。同时,提到了全局变量的声明与隐式全局变量的概念。通过对函数和变量声明的理解,有助于提升JavaScript编程的掌握。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数

函数定义

函数声明 第一种定义方式

弱数据类型:document.write(theFirstName);直接打印出内容

fuction theFirstName() {

}
命名函数表达式 函数表达式 第二种定义方式
var  test = function abc(){
	document.write('a');
}
  1. 后面为表达式,表达式忽略名字,此处写abc也没有作用
  2. test.name 为 abc 其余两种方式函数名都是自己,这个函数名是后面的
匿名函数表达式 第三种定义方式 —常用
var  demo = function (){
	document.write('b');
}
  1. demo.name 为 demo

函数传参(不定参)

function test(a,b){
	document.write(a + b);
//arguments -- [1,2,3] 实参列表 console.log(srguments);
}
test(1,2,3);

实参列表和里面的值一一对应,一个变都变,实参列表进去是几个就是几个

作用域

里面的可以用外面的,外面的不能用里面的

预编译

js执行顺序 1语法分析(看有没有错误) 2预编译 3解释执行:解释一行,执行一行

  1. 函数声明整体提升
  2. 变量 声明提升

预编译前奏

  1. imply global暗示全局变量:即任何变量,如果变量未经声名就赋值,此变量就为全局对象所有(window 就是全局的域)

eg: a = 123;
eg: var a = b= 123;

  1. 一切声明的全局变量,全是window的属性

eg:var a = 123;–> window.a = 123;

函数预编译过程(预编译发生在函数执行的前一刻)

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

结果

function a (){}
123
123
var b = function () {}

预编译四步

  1. 创建AO对象 Activation Object(执行期上下文)
  2. 找形参和变量声明,将变量和形参名作为AO属性名字,值为undefined
  3. 将形参值和形参统一
  4. 在函数体里面找函数声明,值赋予函数体

全局预编译过程

和函数预编译过程相比 没有形参 第一步生成GO对象Global Object Go === Window

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值