gpt4 book ai didi

javascript - javascript 中的函数标识

转载 作者:行者123 更新时间:2023-11-30 10:13:31 26 4
gpt4 key购买 nike

以下是 javascript 中不直观的行为,

function function1 () {};
function function2 () {};

var class_a_functions = {function1:true, function2:true};
var contained = function1 in class_a_functions;//false
var equals = function1.name in class_a_functions;//true

为什么 in 包含测试失败,即使我已将函数而不是它们的名称插入到字典中?

编辑:如果不是很明显,我知道 function1.name 是“function1”。这就是为什么我问为什么测试失败“即使我插入了函数,而不是它们的名称”。

最佳答案

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in

// Arrays
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
0 in trees // returns true
3 in trees // returns true
6 in trees // returns false cause there's no 6th key in trees Array
"bay" in trees // returns false (you must specify the
// index number, not the value at that index)
"length" in trees // returns true (length is an Array property)

这就是它返回 false

的原因

在另一种情况下,class_a_functions[0] 是对 Array 中存储函数的引用,这就是为什么相等性返回 true 的原因 fn1() === fn1()


现在在你编辑的问题之后,上面的内容看起来像是胡说八道,所以我会进一步回答:

var class_a_functions = {function1:true, function2:true};

是现在和对象,其中 function1function2 是简单的属性,将 true 作为值。


var contained = function1 in class_a_functions;//false

上面返回 false 因为对象引用 class_a_functions 中没有“function1”函数


var equals = function1.name in class_a_functions;//true

以上...好吧,让我们回到MDN , 说:

Summary:
The in operator returns true if the specified property
is in the specified object.

所以你有 function1 的属性 现在让我们看看对象 class_a_functions 中是否存在 ... 是的。所以正确

关于javascript - javascript 中的函数标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196206/

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