当我将一个函数分配给“name”变量时,为什么我的代码不起作用?

时间:2017-10-10 11:20:34

标签: javascript

我正在测试这段代码,但发生了一些奇怪的事情。它显示错误

  

Uncaught Typeerror:name不是函数

但是,如果我将“name”更改为其他任何内容,那就可以了!

( name = function (x) {console.log(x || "not set");})();
name ('Rami');

这是Chrome控制台上显示的错误

error screenshot

2 个答案:

答案 0 :(得分:1)

原因是在浏览器上下文中," name"是指" window.name"隐式。

你知道这个函数被调用了两次吗?

如果您只想返回一个函数指针,可以使用:

name2 = function (x) {console.log(x || "not set");};
name2('Rami');

答案 1 :(得分:0)

您正在IIFE的范围之外调用该函数

这是正确的方法:

(function() {
  const name = function(name) {
    console.log('Hello ' + name);
  }
  name('Rami');
}());

示例:https://repl.it/MX9O