退货声明与等号有何不同?

时间:2017-12-18 00:40:24

标签: javascript

Javascript是一种函数式语言,函数使用return语句赋值。当我学习Javascript时,我将=语句记为const pet符号。然而,随着我深入挖掘,我逐渐意识到它并不总是起作用,我看不到模式。我需要记住一些明显的规则吗?

例如,在下面的代码cat: 10中分配了键/值pet.cat。但undefined"use strict"; const pet = function() { return {cat: 10}; } pet(); console.log(pet.cat);的形式返回。

=

当写成一个简单的对象文字,如下所示,它按预期完美地工作。很明显return符号可能与"use strict"; const pet = {cat: 10}; console.log(pet.cat);相似,但它们并不完全相同。

querySelector()

2 个答案:

答案 0 :(得分:2)

你让事情变得混乱。由于pet.cat上没有名为pet的媒体资源,因此您无法查看catpet被分配给返回{ cat:10 }的函数。您需要将其保存到另一个变量,例如:

"use strict";

const pet = function() {
    return {cat: 10};
}

var stuffReturned = pet();

console.log(stuffReturned.cat);

答案 1 :(得分:1)

const pet = function() {
  return {cat: 10};
}

这里正在为pet分配一个匿名函数。 pet现在具有lengthname等属性,这些属性适用于函数。但cat不是pet的属性,它是运行pet时创建的对象的属性。您必须为Javascript引擎包含这些括号,以了解您要运行该函数,而不是参考函数本身。只有这样,你才能对含有猫的物体进行心理替代。因此,如果要查看返回对象的cat属性,可以使用console.log(pet().cat);

能够直接参考功能而不是一直运行它们派上用场!它让我们可以传递整个函数,而不仅仅是结果:

const func = function() {
  let r = Math.random();
  console.log(r);
}
window.setInterval(func, 1000);

这会每秒向控制台发送一个随机数,因为我们将要运行的函数传递给window.setInterval。如果func等同于其(未定义的)返回值,则window.setInterval将无法得到任何内容,并且不知道如何处理它。