(hash)在javascript中作为函数参数有什么意义吗?

does (hash) mean anything as a function parameter in javascript?

本文关键字:什么 参数 函数 hash javascript      更新时间:2023-09-26
var newFieldShow = function(hash) {
  hash.w.fadeIn("2000");
};

我看到这在一些代码我已经从网上检索。我从来没见过有人提到哈希…我试图确定它是否与哈希有关,或者如果它只是一个事件参考,如我习惯看到的function(event),并好奇为什么它在这里被使用。

如果有人发给我这段代码,我会说哈希是一个属性为w的对象,看起来像一个jQuery对象(因为fadeIn方法)。

哈希可以表示任何内容。因此,需要正确命名有意义的变量(和函数参数)。

在这种情况下,hash只是函数参数的名称,除了"传递给名为newFieldShow的函数的第一个参数的内部名称"之外,没有其他特殊含义。名称"hash"在Javascript中不是保留名称。


在一般编程中,术语hash通常是具有"类似哈希表"功能的对象或事物的简称。当给定一个键时,哈希表提供了对数据块的快速查找。Javascript在它的对象类型中也有类似的功能。

obj["foo"] = "One fine day";
console.log(obj["foo"]);    // outputs 'One fine day'.

在您所询问的特定情况下,我们从您包含的几行代码中所能看到的是:

  1. 'hash'是一个具有'w'属性的对象。
  2. w属性的值是一个方法为.fadeIn()的对象。
  3. 由于fadeIn()是一个相对知名的jQuery方法,hash.w可能是一个jQuery对象。

变量的名称只是提示函数期望作为输入的内容,但是Javascript中没有真正的"类型提示"来强制执行任何此类策略。

Hash/object在Javascript中可以互换使用,因为对象成员也可以以类似于在其他语言中访问哈希表中的条目的语法方式进行访问。

hash.w

等价于

hash["w"]

后者是Python或Ruby等语言中常见的语法(实际上实现此行为的类在Ruby中称为"Hash")。

因此,"哈希"一词不是指加密哈希或哈希函数,而是指哈希表的功能。

对象在Javascript中通常被称为"哈希",如果它们仅仅是键/值对的集合,但不实现任何功能,例如

hash = {
    a: 5,
    b: "string",
    c: 7
}

object = {
    member_a: 5,
    member_b: "string",
    do_this: function() { ... },
    do_that: function() { ... }
}