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

(散列)在javascript中作为函数参数有什么意义吗?,javascript,function,Javascript,Function,我在网上检索到的一些文章中看到了这一点。我从来没见过有人提到哈什。。我试图确定它是否与哈希有关,或者它是否只是一个事件引用,比如我经常看到的function(event),我想知道为什么在这里使用它。在这个上下文中,hash只是一个函数参数的名称,除了“内部名称”之外没有特殊意义(在函数中)传递给名为newFieldShow”的函数的第一个参数。名称“hash”在Javascript中不是保留名称 在一般编程中,术语hash通常是具有“类似哈希表”功能的对象或事物的缩写。哈希表在给定键时可快速

我在网上检索到的一些文章中看到了这一点。我从来没见过有人提到哈什。。我试图确定它是否与哈希有关,或者它是否只是一个事件引用,比如我经常看到的
function(event)
,我想知道为什么在这里使用它。

在这个上下文中,
hash
只是一个函数参数的名称,除了“内部名称”之外没有特殊意义(在函数中)传递给名为
newFieldShow
”的函数的第一个参数。名称“hash”在Javascript中不是保留名称


在一般编程中,术语
hash
通常是具有“类似哈希表”功能的对象或事物的缩写。哈希表在给定键时可快速查找一段数据。Javascript在其对象类型中具有类似类型的功能

var newFieldShow = function(hash) {
  hash.w.fadeIn("2000");
};

在您询问的特定案例中,我们从您包含的两行代码中可以看到:

  • “hash”是具有“w”属性的对象
  • w
    属性的值是具有方法
    .fadeIn()
    的对象
  • 由于
    fadeIn()
    是一个相对知名的jQuery方法,
    hash.w
    可能是一个jQuery对象

  • 如果有人给我发送了这段代码,我会说hash是一个具有名为w的属性的对象,它看起来是一个jQuery对象(因为fadeIn方法)


    hash可能意味着任何东西。因此,需要正确命名有意义的变量(和函数参数)。

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

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

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

    hash.w
    
    后者是Python或Ruby等语言中常见的语法(事实上,实现此行为的类在Ruby中称为“Hash”)

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

    如果对象仅仅是键/值对的集合,但不实现任何函数,则在Javascript中通常称为“哈希”

    hash["w"]
    
    反对

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

    函数的形式参数与变量非常相似。它只是一个引用传递给函数的任何参数的名称。与调用函数时传递的所有参数几乎相同。
    var hash=arguments[0];
    ,其中
    arguments
    是一个集合,表示调用函数时传递的所有参数。
    object = {
        member_a: 5,
        member_b: "string",
        do_this: function() { ... },
        do_that: function() { ... }
    }