gpt4 book ai didi

javascript - "function x.y()"和 "x.y = function ()"有什么区别?

转载 作者:行者123 更新时间:2023-12-03 16:48:36 25 4
gpt4 key购买 nike

这两段代码之间的唯一区别在于两个 block 引用中的第 1 行。

为什么这两段代码的行为不同?

function cat.meow() {
console.log("Meow");
};

对比

cat.meow = function () {
console.log("Meow");
};

最佳答案

第一个是无效的 JavaScript,第二个是一个更好的主意,更多细节在下面......

为什么?

变量/函数名称只能包含字母、下划线、$、数字(如果它们不是第一个字符)以及一些其他 ACII 和 unicode 字符(检查 herehereKaiidoFelix King 推荐)。它与 var cat.meow; 相同,后者是无效的 JavaScript 并且会抛出错误。更具体地说

SyntaxError: Unexpected token '.'.

编译器期望有一个括号或一个空格,但它看到一个句点,但并不认为它是一个对象。这也发生在对象的括号语法中:(这意味着您不能以第一种方式为对象'item'定义函数

解释

当你这样做时:foo = function () {} 它将 foo 的值设置到函数。当您将其作为函数 function foo () {} 执行时,它会“创建”foo

所以...

第二个是指cat中的meow。所以它是将cat中的meow设置为有效的函数。这相当于:

var cat = {
meow: function () {
console.log("Meow!");
}
};

显然 cat 没有定义,这仍然会抛出错误。如果你真的真的想让你的函数被调用为 cat.meow (我强烈建议不要这样做),你将执行以下操作

window['cat.meow'] = function () {
console.log("Meow");
};

除非您有不同的对象,否则这会使全局范围变得困惑,这是极度不好的做法;因此,如果您确实使用它,请 secret 进行,否则几乎每个程序员都会抨击您的编码实践。

关于javascript - "function x.y()"和 "x.y = function ()"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29483318/

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