gpt4 book ai didi

缺少分号时Javascript未定义的类函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:55:03 24 4
gpt4 key购买 nike

function Foo() {
var that = this;
that.bar = function() {}
that.baz = function() {}

(function() {
that.baz();
}());
}
new Foo;
Uncaught TypeError: Object #<Foo> has no method 'baz' that.bar 工作正常,只是最后一个函数不存在。在 ; 函数定义之后添加 baz 可以解决所有问题。

我知道排除 ; 可能会搞砸一些事情,但我认为你肯定不应该将 ; 放在函数之后。没有语言能做到这一点。为什么在 ; 函数之后排除 baz 会导致此中断?我应该在函数定义之后放置 ; 吗?

最佳答案

函数声明后不需要分号:

function foo() {
}

如果您添加分号,则没有任何害处,只是您不需要它:
function foo() {
};

这会在您的函数声明之后插入一个空语句,该语句无效。以同样的方式,这不会有什么坏处,只会让阅读你的代码的人感到困惑:
var i = 1;;;;;;;;;;;;;;;;;;;;;;;;;;

OTOH,在赋值语句后确实需要一个分号:
that.prop = 1;

如果您分配的值是函数表达式,则不会改变:
that.foo = function() {};

关于缺少分号时Javascript未定义的类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16533845/

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