将参数传递给函数?

Ale*_*olo 2 javascript

我需要学习如何将关联数组传递给函数,以便我可以在函数中执行以下操作:

function someName($argums) {
    if (gettype($argums) != 'array' || 
       !array_key_exists('myOneKey', $argums) ||
       !array_key_exists('myOtherKey', $argums)) {              
           return false;
    } 

    /*do other stuff*/
}
Run Code Online (Sandbox Code Playgroud)

(这就是我在PHP中用JavaScript做的方法.)

T.J*_*der 6

所有Javascript对象都是关联数组,所以这很容易.实际上,你有几种选择,因为一个对象可以有自己的特性,以"falsey"值(它从原型对象继承属性,具有未定义值的属性和属性undefined,null,0,"",或者当然,false).(没有属性的对象与具有未定义值的对象之间存在差异.)

检查对象是否具有属性本身:您使用obj.hasOwnProperty:

function someName(obj) {
    if (!obj ||
        !obj.hasOwnProperty('myOneKey') ||
        !obj.hasOwnProperty('myOtherKey'))
        return false;
    }
    // Do other stuff
}
Run Code Online (Sandbox Code Playgroud)

检查对象是否具有属性本身通过其原型:您使用propName in obj:

function someName(obj) {
    if (!obj ||
        !('myOneKey' in obj) ||
        !('myOtherKey' in obj))
        return false;
    }
    // Do other stuff
}
Run Code Online (Sandbox Code Playgroud)

检查对象是否具有属性(直接或通过原型)并且它未定义:您查找未定义的值:

function someName(obj) {
    if (!obj ||
        typeof obj.myOneKey === "undefined" ||
        typeof obj.myOtherKey === "undefined")
        return false;
    }
    // Do other stuff
}
Run Code Online (Sandbox Code Playgroud)

检查是否该属性是falsey( ,undefined,null,0,""或者当然,false),不管原因是:只要使用!:

function someName(obj) {
    if (!obj ||
        !obj.myOneKey ||
        !obj.myOtherKey)
        return false;
    }
    // Do other stuff
}
Run Code Online (Sandbox Code Playgroud)

无论如何,用法:

var obj = {
    myOneKey: 'fred',
    myOtherKey: 'barney'
};
someName(obj);
Run Code Online (Sandbox Code Playgroud)