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()
答案 0 :(得分:2)
你让事情变得混乱。由于pet.cat
上没有名为pet
的媒体资源,因此您无法查看cat
。 pet
被分配给返回{ 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
现在具有length
和name
等属性,这些属性适用于函数。但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
将无法得到任何内容,并且不知道如何处理它。