javascript function参数(js带参数的函数定义)

图片授权基于 www.pixabay.com 相关协议

在函数中,有三个语义组件:参数、执行体、结果。

    function f(x){  return x;}

    参数:x

    执行体:{…}

    结果:即使是 undefined,也是有结果的。

    function f(x){    return x;}f(a=100);// 100
    上面的代码执行了什么?
    • 执行 f() 函数;

    • 参数在函数外赋值 a = 100;

    • 参数在函数内赋值 x = 100;

    • 返回一个结果 x;

    函数参数是在外面的「全局作用域」中赋值的,函数内是有自己块作用域的,因为在执行函数体的过程中,会创建一个块作用域。所以,a = 100 的作用域和函数体 x =100 的作用域是两个各自独立的。
    并且,函数传入进去的参数(传的是值,不是引用)与函数体是一个作用域。
    ECMAScript 规定 f(a=100) 传入的只能是值。
    f(a=100); 在执行的时候确实传入的是值,但在 function f(x) 这里变量还会重新赋值,会执行「初始器赋值」这个操作,也就是执行 let x = 100。
    初始器赋值,如果参数是简单的参数,引擎就会绑定一个对照表,arguments 的下标对照着参数的列表。如果是非简单参数,那就会执行一个赋值过程。

    也就是说在执行函数 f() 时,会出现一个赋值 a = 100,然后在函数的执行过程中,又出现了一次赋值 x = 100。


    [1]极客时间《JavaScript核心原理解析》

    原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34545.html

    (0)
    小道研究's avatar小道研究
    上一篇 2024年4月13日 下午1:26
    下一篇 2024年4月13日 下午1:28

    相关推荐

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注