【问题标题】:Javascript functions with different parameter passing具有不同参数传递的Javascript函数
【发布时间】:2018-02-07 23:46:44
【问题描述】:

最近我遇到了一个很好的 javascript 函数示例。请在下面的代码中找到。

function add(a,b){
  return (a+b);
} 
console.log("Summation is===>",add(1,2));    
console.log("Summation is===>",add((1),(2)));

两个打印输出都有一个 3。 两个函数参数有什么区别?第二个函数参数与第一个函数参数有何不同?

【问题讨论】:

  • 一个 LISP 程序员创建了示例?

标签: javascript function parameter-passing


【解决方案1】:

两个函数参数有什么区别?

什么都没有。除了极少数例外*,将分组运算符 (()) 放在已经隔离的表达式周围根本没有任何效果。 add(1,2) 中的 12 已经隔离。


* 少数例外情况中的一些(全部?呵呵,可能不是)

  1. 如果您想将单个表达式放在 return 中与返回不同的行上,例如:

    return            // WRONG
        expression;
    

    你必须像这样在它周围加上()

    return (
        expression
    );
    

    为了防止自动分号插入的恐怖在换行符所在的return 之后添加;,创建一个非常微妙的错误(因为return; 之后的表达式本身不是错误,不过一个 lint 工具有望帮助您抓住它)。

  2. 如果您在箭头函数上使用简洁的主体来返回对象初始化器的结果:

    () => {foo: "bar"} // WRONG
    

    您必须将对象初始化程序包装在() 中,以避免将初始化程序的{ 作为函数体的开头,如下所示:

    () => ({foo: "bar"})
    
  3. 如果你想在需要声明的地方开始一个函数表达式,你必须在function关键字前面放一些东西,否则它将开始一个函数声明而不是函数表达式。它可以是告诉解析器从期望语句切换到期望表达式的几件事中的任何一个,但() 是一个常见的选择,尤其是对于 IIFE:

    (function() { /*...*/})();
    

旁注:您在return (a+b); 中使用的分组运算符没有任何效果,因为它是一个孤立的表达式,您没有处理上面的#1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2015-11-30
    • 2023-03-08
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2020-01-26
    相关资源
    最近更新 更多