函数的预处理

本文探讨了JavaScript中函数的预处理阶段,包括函数参数处理、变量优先级和arguments对象的作用。在预处理期间,函数的优先级最高,如果参数名称重复,arguments[0]的优先级最高。在执行阶段,预处理会产生变量提前和函数声明提前的效果。在严格模式下,形参和arguments是独立的,而在非严格模式下,函数内部会创建与参数名相同的变量并进行赋值覆盖。
摘要由CSDN通过智能技术生成

函数的预处理

console.log(a)  // 输出函数
var a = 5
function a () {}复制代码
function fn(a,b,a){
console.log(a);//function a(){}
console.log(arguments[0]);//1
console.log(arguments[2]);//function a(){}
function a(){
}
var a=5;
}
fn(1,2,3);

函数预处理:函数开始运行时会创建跟参数名相同的变量并赋值再和arguments对象产生引用关系。

预处理阶段 function 优先级最高 预处理阶段发生冲突的变量名,会被优先级高的忽略掉。

函数读取中 arguments 优先级是最高的 比function 还要高。

(1)函数参数名称重复

function fn(a,b,a){
        console.log(a)
        var a=10;
        console.log(arguments[0]);
        console.log(arguments[1]);
        console.log(arguments[2]);
}
 fn(1,2,3); // 会输出什么?

函数fn(),arguments[0] 优先级是最高,此时输出1,由于函数预处理,所有此时a已经被重新赋值变成了10

预处理阶段将变量保存在window域:会产生变量提前和函数声明提前的效果。

window{
    fs : 指向函数,
    as : undefined,
    gs : undefined
}

在执行阶段window域的情况


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值