用括号

时间:2017-11-23 18:37:54

标签: javascript

创建带有名称的函数并用括号括起来或将其作为参数/回调传递给另一个函数时。当您尝试稍后通过其名称​​引用该函数时会引发错误。

示例:

(function name1(){});
console.log(name1); // throws error: name1 is not defined

示例:

plugin.module(function name2(){});
name2(); // throws error: name2 is not defined

2 个答案:

答案 0 :(得分:1)

function关键字执行两个相似但截然不同的事情:

  1. 它引入了函数声明语句;
  2. 它引入了函数表达式
  3. 这两件事都创建了一个函数,但前者(函数声明)也将函数名称(在这种情况下需要)绑定到本地作用域。但是,函数表达式 将函数名绑定到本地作用域。该名称仅在创建函数的范围内绑定(即函数内)。

    function是语句中的第一个标记时,它是一个函数声明。否则,它是一个函数表达式。因此,当您在function语句周围使用括号时,它不再是一个语句;它是一种表达方式。

答案 1 :(得分:1)

要解决的一些方法:

function name1(){ //declaration instead of expression
 //...
}

name1();

或者有点丑陋:

let name1;
(name1 = function(){/*...*/})();
name1();