gpt4 book ai didi

javascript - 为什么我们不在javascript的函数参数中使用像 "let"、 "var"和 "const"这样的关键字?

转载 作者:行者123 更新时间:2023-12-04 08:45:06 25 4
gpt4 key购买 nike

function myFunction(let name){
console.log("hello "+name);
}

myFunction("adi");
上面的代码产生一个错误。为什么?

最佳答案

它是语言的工作方式,以及它的语法是如何定义的。然而,这一定是有原因的。
我可以稍微推理一下并分享我的理由。
JavaScript 中有两种作用域类型,

  • 函数作用域,
  • 区块范围
  • var定义一个具有函数作用域的变量,而 letconst定义块作用域变量。
    函数参数在函数范围内,这是有道理的,至少在语言的当前思维方式下,因为将参数传递给块中范围内的函数是没有意义的。这会引起有关参数所属范围的歧义的问题,这可以通过使用另一种语法来以某种方式标记参数和块来克服。使用另一种可能甚至有用的语言设计思维方式。但是,该语言的当前状态并非如此,它本身就有意义。
    历史上也只有 var . letconst来得晚于 var ,因此语言中只有函数范围,因此参数必须在全局范围内或在函数范围内,并且它被设计为在函数范围内,这在 ALGOL 类语言中并不罕见且非常常见。当 letconst他们来的一个原因是具有功能块以外的块级作用域,例如 if条件, for等等。所以它们没有应用于函数参数,当所有参数都在它们的函数中可见时,这通常更有用。
    只是为了澄清我对替代宇宙或平行宇宙 JavaScript 中的假设替代作用域的含义,我想构建一个示例,其中还有另一个问题需要回答:
    function f(x:a, x:b, y:b) { // parameters' scope labeling syntax
    scope a: if(x > 1 && !y) return x + 1; // block's scope labeling syntax
    scope b: return x * y;

    }

    f(3:a, 9:b, 0:b) // returns 4
    f(3:a, 9:b, 1:b) // returns 27

    关于javascript - 为什么我们不在javascript的函数参数中使用像 "let"、 "var"和 "const"这样的关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64365911/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com