1

我在 Scalable Javascript Aplication Architecture 上开发了一个非常大的应用程序,在核心我有一个简单的函数来将 css 属性分配给一个元素。

establishCSSvalue : function( element, property, value ) {
 if( element && property && value ) {
jQuery( element ).css( property, value );
 } else {
//log wrong arguments
 }
}

如果变量值等于 0,则 if 转到 else,如果我删除值条件 o 修复 0:

if( element && property ) {
if( element && property && ( value || value == 0 ) ) {

有用。

任何人都可以向我解释它发生了什么,或者为什么?我无法理解或者我的 javascript 知识还不够,在 php 中使用 isset 很容易。对我来说,存在 value = 0 的变量...

谢谢。

4

2 回答 2

4

如果您只是想查看所有三个函数参数实际上都存在并且不是未定义的,那么您不能只检查它们的错误值。您必须专门检查它们是否未定义。

你可以这样做:

if (element !== undefined && property !== undefined && value !== undefined)

你不能这样做的原因:

if (element && property && value)

是因为任何虚假值都会导致该语句失败。错误值包括nullfalse0""和。因此,如果您只想检查以确保它不是未定义的,那么您需要专门检查它而不是任何虚假值。undefinedNaN


注意:如果你真正想知道的是调用者在调用函数时是否真的向函数传递了三个参数,你也可以arguments.length像这样检查:

if (arguments.length === 3)

或者只是检查最后一个变量是否未定义:

if (value !== undefined)
于 2012-08-21T08:19:18.340 回答
0

我在想,我做了以下。核心类的一个函数:

function isset( variable ) {
    if( variable !== null && variable !== false && variable !== undefined && variable !== NaN  && variable !== "") {
        return true;
    } else {
        return false;
    }
}

我正在考虑是否包含“”,但我想我会在未来决定。

现在我简单地要求 isset(variable),只有当我要进行 jquery 或我需要所有具有值的变量的操作时,以前我可以使用技巧在变量中传递不同的 Falsey 值,以有时从数据库中获取属性值。

谢谢。

于 2012-08-21T08:42:09.773 回答