我正在测试这段代码,但发生了一些奇怪的事情。它显示了一个错误为什么我的代码在向“name”变量赋值时不起作用?
Uncaught Typeerror: name is not a function
,但如果我改变“名”到别的,它的作品!
(name = function (x) {console.log(x || "not set");})();
name ('Rami');
这是出现在Chrome控制台
我正在测试这段代码,但发生了一些奇怪的事情。它显示了一个错误为什么我的代码在向“name”变量赋值时不起作用?
Uncaught Typeerror: name is not a function
,但如果我改变“名”到别的,它的作品!
(name = function (x) {console.log(x || "not set");})();
name ('Rami');
这是出现在Chrome控制台
你调用从IIFE的范围
的外设功能这将是正确的做法错误这样做:
(function() {
const name = function(name) {
console.log('Hello ' + name);
}
name('Rami');
}());
另外,正如上面的注释所述,'name'这个词是有问题的,因为它在父上下文中有一个存在的意义。对于其他标签,调用函数之外的函数的错误可能会被javascript“固定”,就像它自动添加缺少分号等一样。 – arbuthnott
在IIFE内部包含'const name'不会覆盖''窗口。名称的财产。 @arbuthnott – Baruch
正确,但我认为如果'name'在父上下文中没有意义(例如'window.name'),那么将该调用移出IIFE将由代码纠正。这就是为什么使用其他标签(对于'const myName = ...'可能会起作用 – arbuthnott
请张贴的问题,而不是图像实际的错误文本。所有设备或位置都无法看到图像。 – Nope
,因为它是你的浏览器中的一个变量(它指向'window.name') –
@neuhaus否它不是关键字 –