Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义属性时,设置默认值_Javascript_Object - Fatal编程技术网

Javascript 未定义属性时,设置默认值

Javascript 未定义属性时,设置默认值,javascript,object,Javascript,Object,为什么只有一个属性设置为“未定义”,尽管我写了,但当它是“未定义”时,将它设置为一个值 var e = { f: function(g) { g === 'undefined' ? g = {} : {}; g.h === 'undefined' ? g.h = 1 : {}; g.i === 'undefined' ? g.i = 2 : {}; console.log(g

为什么只有一个属性设置为“未定义”,尽管我写了,但当它是“未定义”时,将它设置为一个值

var e = {
    f: function(g) {
        g    ===  'undefined'  ?  g    =  {} : {};
        g.h  ===  'undefined'  ?  g.h  =  1  : {};
        g.i  ===  'undefined'  ?  g.i  =  2  : {};

        console.log(g);

    }
};

期待中的感谢

使用
未定义的
,而不是
未定义的

但你可以写得更清楚:

if (g === undefined) g = {};

这就是我浏览器的JavaScript控制台所说的——尝试删除“未定义”周围的单引号标记。似乎JavaScript的弱类型和自动转换只走了这么远

使用
typeof g==='undefined'
,而不是
g=='undefined'

您也可以使用
g==undefined


+1在这种情况下,我认为使用
x===undefined
typeof x==='undefined'
更合适,因为
x
在范围内是明确的。FWIW,您使用三元
?:
非常可疑。不要对副作用使用
?:
(例如,不要在其内部赋值),而是使用表达式的返回值:
g=g==undefined?“默认值”:g
。但我通常更喜欢使用相反的形式(例如正的是第一位):
g=g!==未定义?g:“默认值”
。(或者更好,如果使用正常的
)不知道,可能是一个习惯,但同时我认为,在这种情况下,这是一个坏习惯:D
'undefined' === undefined
false

undefined === undefined
true